matlab的基本小常识
1. 在每行语句后面加上英文分号表示不在命令行窗口显示运行结果。
a = 3;
a = 5
2. 多行注释快捷键,CTRL+R。
3. 取消多行注释,CTRL+T。
4. 清空工作区的所有变量使用clear。
5. 清空命令行窗口的所有变量使用clc。
6. clc和clear一起使用,起到初始化的作用,防止之前的结果对新脚本文件(后缀名为.m的文件)产生干扰。
输入和输出函数
输出函数disp()
disp函数(display的缩写)是屏幕输出函数,类似c语言的printf函数。
如果括号内的内容如果为字符串,单双引号不做区分,disp("太阳是我的指南针")。
如果括号内的内容是数、向量(只有行或列)或者矩阵(既有行又有列),disp(变量名)。
disp函数之后加不加分号都会输出结果。
向量和矩阵
a = [1 2 3]
a = [1,2,3]
%同一行的元素之间用逗号或空格分隔。
a = [1;2;3]
%同一列的元素之间用分号分隔。
合并字符串的方法
1. strcat(str1, str2, ……, strn)
2. ["str1" "str2"] or ["str1", "str2"]
一个有用的字符串函数:num2str 将数字转换成字符串
c = 100
num2str(c)
disp(["c的取值为", num2str(c)])
or disp(strcat("c的取值为", num2str(c)))
输入函数input()
一般我们会将输入的输、向量、矩阵或字符串等赋值给一个变量。
A = input("请输入A:");
B = input("请输入A:")
% input函数加了分号,因此A变量不会在命令行窗口打印结果;而B变量就会打印结果。
求和函数sum
1. 如果是向量(无论是列向量还是行向量),就直接求和。
E = [1 2 3]
sum(E)
2. 如果是矩阵,需要根据行和列的方向来作区分。
E = [1,2;3,4;5,6]
a = sum(E) or a = sum(E, 1) %按列求和(得到一个行向量)。
a = sum(E, 2) %按行求和(得到一个列向量)。
a = sum(sum(E)) or a = sum(E(:)) %对整个矩阵求和。
dim(维度)默认为1。
dim = 1表示按照列。
dim = 2表示按照行。
如何提取矩阵中的指定位置元素
E = [1,2,11;3,4,12;5,6,13;7,8,14;9,10,15]
1. 取指定行和列的一个元素
E(2,1) %第二行第一列的元素
2. 取指定某一行的全部元素
E(2,:) %输出第二行的全部元素(输出行向量)
3. 取指定某一列的全部元素
E(:,1) %输出第一列的全部元素(输出列向量)
4. 取指定某几行的全部元素
E([1,2],:) %只取第一行和第二行的全部元素
E(1:3,:) %取第一行到第三行的全部元素
E(1:2:3,:) %取第一行到第三行,从一开始每次递增两个单位,到三结束
%涉及到等差数列的语法 begin:d:end
E(2:end,:) %取第二行到最后一行的全部元素
E(2:end-1,:) %取第二行到倒数第二行的全部元素
5. 取全部元素(按列全部拼接成一列,最终输出一个列向量)
E(:)
size函数
A = [1,2,3;4,5,6]
size(A)
%上放函数用来求矩阵A的大小,它返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数。
[r,c] = sizeof(A)
%将矩阵A的行数返回到第一个变量r中,将矩阵A的列数返回到第二个变量c中。
r = size(A,1) %返回行数
c = size(A,2) %返回列数
repmat函数
A = [1,2,3;4,5,6]
B = repmat(A,m,n)
%将矩阵A复制m*n块,把A作为B的元素,B由m*n个A平铺而成
矩阵的运算
A = [1,2;3,4]
B = [1,0;1,1]
%在矩阵的运算中," * "和" / "代表矩阵之间的乘法与除法。
A*B A/B
%逆矩阵 inv(A)
A*inv(A) = 单位矩阵 %一个矩阵乘它的逆矩阵等于单位矩阵
A/B = A*inv(B) %A矩阵除以B矩阵等于A矩阵乘B的逆矩阵
%两个相同形状的矩阵对应元素之间的乘除法需要使用" .* "和" ./ "
A.*B A./B
%矩阵中每个元素同时乘或除以一个常数,可以用" * "、" / "也可以用" .* "、" ./ "。
%矩阵中每个元素同时乘方需要使用" .^ "
A .^ 2 = A .* A
A * A是矩阵乘法,不是乘方。
Matlab中求特征值和特征向量
% 在Matlab中,计算矩阵A的特征值和特征向量的函数是eig(A),其中最常用的两个用法:
A=[1 2 3;2 2 1;2 0 3]
E=eig(A); %求矩阵A的全部特征值,构成向量E。
[V,D]=eig(A); %求矩阵A的全部特征值,构成对角矩阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)
find函数的基本用法
find函数可以用来返回向量或矩阵中不为0的元素的位置索引。
X = [1 0 4 -3 0 0 0 8 6]
向量:
ind = find(X) % 返回X向量中所有不为0元素的索引:1 3 4 8 9
ind = find(X,2) % 返回前两个不为0的位置索引:1 3
X = [1 0 4;-3 0 0;0 8 6]
矩阵:
因为在matlab中存储矩阵是一列一列存储的,所以返回的是一个列向量。
ind = find(X) % 返回X矩阵中所有不为0元素的索引:1 2 6 7 9(列向量)
也可以分别返回行和列数
[r,c] = find(X) % 返回所有不为0的元素的行和列到r和c中
[r,c] = find(X,1) %只返回第一个不为0的元素
矩阵与常数大小的判断运算
%共有三种运算符,分别是大于(>)、小于(<)和等于(==)。
X = [1 0 4;-3 0 0;0 8 6]
X > 0 %在矩阵中某个位置的元素如果满足判断条件就会在生成的新矩阵的原位置返回1,否则返回0,最终生成一个只有0和1的相同形状的矩阵。
判断语句
%matlab中的判断语句,if所在行不需要冒号,语句的最后以end结尾,中间语句要缩进。
a = input("请输入考试成绩")
if a>=85
disp("成绩优秀")
elseif a>=60
disp("成绩合格")
else
disp("成绩挂科")
end