变量
MATLAB程序的基本数据单元是数组。标量在MATLAB里面也被当做数组处理,被看作只有一行一列的数组。数组可以定义为向量或矩阵,向量一般描述一维数组,矩阵一般描述二维或多维数组。数组的定义要用[]来括起来,数组中同一行元素间以空格或逗号','隔开,行与行间由分号';'隔开。
定义及赋值方式:
实数 | >> x = 5 |
复数 | >> x = 5 + 10i 或者>> 5 + 10j |
行向量 | >> x = [1 2 3] 或者>> x = [1, 2, 3] |
列向量 | >> x = [1; 2; 3] |
3 * 3 矩阵 | >> x = [1 2 3; 4 5 6; 7 8 9] |
固定变量
pi | π |
i, j | |
inf | ∞ |
NaN | 非数 |
ans | 默认变量 |
向量生成
1.直接生成向量
>> x = [0.00 1.00 2.00]
x =
0.00 1.00 2.00
>> x = [0.00 1.00 2.00]' %转置
x =
0.00
1.00
2.00
2.利用冒号生成向量
用两个冒号安顺序
隔开‘第一个值’,‘步增’ 和‘最后一个值’ 就可生成指定的向量. 如果步增为1, 则可以省略掉步增
和一个冒号, 比如
>> x = 1:0.5:3
x =
[1.0 1.5 2.0 2.5 3.0]
>> y = 1:3
x =
[1 2 3]
3.利用线性等分生成向量
linspace(star,end,gap) 生成一个线性等分向量
格式y=linspace(x1,x2,n)
表示生成n维向量,其中x1为第一个数,x2为最后一个数,当n默认时,系统默认生成100维向量。
例:
>>y=linspace(0,2,5)
y =
0 0.5000 1.0000 1.5000 2.0000
矩阵的生成
1.直接输入矩阵
>> a=[1,2,3;4,5,6;exp(1),7/6,abs(-2.8)]
a =
1.0000 2.0000 3.0000
4.0000 5.0000 6.0000
2.7183 1.1667 2.8000
2.利用函数生成矩阵
zeros生成全0阵
>> x=zeros(2,3)
x =
0 0 0
0 0 0
ones生成全1阵
>> y=ones(2)
y =
1 1
1 1
eye(m,n)生成单位阵
>> x=eye(2)
x =
1 0
0 1
获取向量/矩阵中的元素
指定元素所在的行和列,即可获得指定的一个或多个元素。
例:有矩阵A = [1 2 3; 4 5 6; 7 8 9]
>> x = A(1,3)
x =
3
>> y = A(2,:)
x =
[4 5 6]
>> z = A(1:2,1:2)
z =
[1 2; 4 5]
矩阵和数组运算
1.算数运算
1)基本运算
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 右除运算 |
\ | 左除运算 |
^ | 指数运算 |
' | 转置运算 |
运算法则同线性代数
附:
x = A\B 是Ax =B 的解,而x=B/A是xA =B 的解。
2)点运算 针对同阶对应分量的运算
.* | 乘法运算 |
./ | 右除运算 |
.\ | 左除运算 |
.^ | 指数运算 |
例:
>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = A*A
B =
7 10
15 22
>> C = A.*A
C =
1 4
9 16
2.关系运算
判断两同阶数组(或者一个是矩阵,另一个是标量)对应分量间的的关系。
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
~= | 不等于 |
若连个矩阵进行关系运算,则将两个矩阵对应元素逐一进行关系运算。输出结果只包含0和1。
例:
>> A = [1 3 4 2 5]
>> B = [2 1 3 5 4]
>> C = A>B % C = [1> 2, 3 >1, 4 >3, 2 >5, 5 >4]
C =
0 1 1 0 1
>> D = A<=3 % D = [1<=3, 3<=3, 4<=3, 2<=3, 5<=3]
D =
1 1 0 1 0
3.逻辑运算
& | 与 |
| | 或 |
~ | 非 |
例:
>> A = [1 3 4 2 5];
>> B = [2 1 3 5 4];
>> C = (A>B) & (A<=3)
C =
0 1 0 0 0
常用数学函数
sin | 正弦 | Asin | 反正弦 |
cos | 余弦 | acos | 反余弦 |
tan | 正切 | atan | 反正切 |
cot | 余切 | acot | 反余切 |
Exp | 指数函数 | Sqrt | 平方根 |
Log | 自然对数 | log10 | 以10 为底的对数 |
abs | 绝对数 | sign | 符号函数 |
以上函数是针对矩阵对应元素逐一进行函数的运算。
例:
>> theta = 0:pi/3:pi
theta =
0 1.0472 2.0944 3.1416
>> sin(theta)
ans =
0 0.8660 0.8660 0.0000
数组操作函数
rot90(A) | 将A逆时针方向旋转90° |
rot90(A,K) | 将A逆时针方向旋转(90*K)° |
fliplr(A) | 将矩阵A左右翻转 |
flipud(A) | 将矩阵A上下翻转 |
flipdim(A,dim) | 将矩阵A的dim维翻转,dim=1表示行,dim=2表示列 |
max | 输出最大数 |
min | 输出最小数 |
sum | 求和 |
例:
flipud, fliplr, rot90
>> A = [1 2 3; 4 5 6; 7 8 9];
>> B = flipud(A)
A =
7 8 9
4 5 6
1 2 3
>> C = rot90(A)
C =
3 6 9
2 5 8
1 4 7
sum
多维时默认求各列之和,若后加2则求各行之和
>> A = [1 2 3];
>> sum(A)
ans =
6
>> B = [1 2 3; 4 5 6; 7 8 9];
>> sum(B)
ans =
12 15 18
>> sum(B,2)
ans =
6
15
25
>> sum(B(:)) %求所有项总和
ans =
45
max,min
>> A = [1 2 3];
>> max(A)
ans =
3
>> max(A,2) 将A中所有元素与2比较
ans =
2 2 3
>> B = [1 3 9; 4 8 6]; B为2维按照每列取最大值
>> max(B)
ans =
4 8 9
>> max(B, [], 2)
ans =
9
8
基本语句
for .. end
if .. else .. end
while .. end
switch .. case .. end
例:求1-10 以内的奇数和
% sum of the odd numbers between 1 and 10
x = 0;
for i = 1:10
if mod(i,2)
x= x + i;
end
end
简单作图
plot(x,y,'s')
其中x表示横坐标向量,y表示纵坐标向量,s为选项字符串,用于控制线型与颜色。常用表示见绘图参数表。
title(图形名称)
xlabel(x 轴说明); ylabel(y 轴说明)
text(x,y, 图形说明)
legend(图例1, 图例2, ...)
grid on / grid off / grid minor
axis([xmin xmax ymin ymax]), xlim([xmin, xmax])
绘图参数表
b | 蓝 | . | 点 | ^ | 向上三角形 | - | 实线 |
g | 绿 | o | 圆 | < | 向左三角形 | : | 点线 |
r | 红 | x | 叉号 |
| 向右三角形 | -. | 点划线 |
c | 青 | + | 加号 | p | 五角星 | -- | 虚线 |
m | 紫 |
| 星号 | h | 六角星 |
|
|
y | 黄 | s | 正方形 |
|
|
|
|
k | 黑 | d | 菱形 |
|
|
|
|
w | 白 | v | 向下三角形 |
|
|
|
|
例1:
x=-2*pi:0.1:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'-b');
hold on %图像保持
plot(x,y2,'-r');
xlabel('X')
ylabel('Y')
text(0,0,'(0,0)')
legend('sinx','conx')
例2:
%建模一家
t=0:pi/180:4*pi;
x=16*sin(t).^3;
y=13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);
plot(x-3,y,'-r',x+3,y,'-y',x+9,y,'-b');
axis([-20,25,-20,15]);
title('Cute and charming Family')
legend('Feng','Wei','Shi')
注:本文是我学习MATLAB时整理的笔记,方便日后查看复习。分享给大家,文中可能有一些错误,或简陋难以理解的地方,大家可以指正,共同进步。(部分内容参照网上资料,侵删)