Matlab基础
一、基本命令和语句
1. 向量、矩阵
x=[1 2 3] 或 x=[1,2,3] 行向量
y=[1;2;3] 列向量
; 换行
clc 清屏
x=[1 2 3; 4 5 6; 7 8 9] 3X3矩阵
y=[1 2 3
4 5 6] 2X3矩阵
2.赋值:
x=[0:2] 即x= 0.00 1.00 2.00
x=[0:2]’ 转置x=0.00
1.00
2.00
x=[0:0.5:2] x=0.00 0.50 1.00 1.50 2.00
x=linspace(0,2,5) 0到2之间有5个点 x=0.00 0.50 1.00 1.50 2.00
3.常用矩阵
x=zeros(2,3) 两行三列的0矩阵 初始化全为0的矩阵
x=zeros(2) 两行两列的0的方阵
y=ones(2) 两行两列全为1的方阵
y=ones(2,3) 同理
x=eye(2) 单位阵 x= 1.00 0.00
0.00 1.00
x=eye(2,3) 主对角线全为1
5行5列全为2的矩阵: x=2*ones(5)
4.固定变量
pi π
z=i z=0.00+1.00i
x=1/0 无穷大 x=Inf
0/0 NaN
5.矩阵运算和数组运算
A=[1 2 3 ; 4 5 6 ; 7 8 9]
B=[5 3 6 ; 5 5 6 ; 2 3 2]
C=A+B
D=A-B
E=A*B 矩阵的乘法
F=A.*B 对应位置的数相乘
G=A/B 矩阵的除法 即 G=A * B^(-1) A乘B的逆
H=A./B 对应位置的数相除
I=A^2 A的二次方 方阵可以有几次方
J=A.^2 A对应位置的二次方
K=A.^B A对应位置的B次方
6.数组和数组行列块操作:取值
A=[1 2 3; 4 5 6; 7 8 9]
x=A(1,3) 即取第一行第三列的数3
y=A(2, : ) 第二行的所有数
z=A(1:2, 1:3) 第一行和第二行中第一列到第三列的数
7.赋值
A(1,3) = 0 把第一行第三列的数赋值为0
A(2, : ) = [6 5 4] 把第二行的数赋值为6 5 4
A(1:2, 1:2) =[-1 -2; -3 -4] 把第一、二行的第一二列数赋值为-1 -2 -3 -4
8.比较和逻辑运算
x=[1 2 3 4 5 6 7 8 9]
y=[1 4 3 8 6 5 7 2 9]
eq=(x==y) 即eq= 1 0 1 0 0 0 1 0 1 (相等返回1,不等返回0)
xy=(x>5)&(y<7) 即xy= 0 0 0 0 0 1 0 1 0 (与运算,且,即两者都满足返回1)
xoy=(x>5)|(y<7) 即xoy= 1 1 1 0 1 1 1 1 1 (或运算,至少满足一个条件返回1)
xory=xor(x>5,y<7) 即xory= 1 1 1 0 1 0 1 0 1(异或运算,两个一真一假,为真返回1)
x=[1 -2 3 -4 5 -6 7 -8 9];
x(x<0)=0 把x行向量中x<0的数置为0
y=[1 2 3; -4 5 6; 7 8 9];
y(y( : ,1)<0, : ) = 0 把第二行所有的数置为0
解释:
首先y( : ,1)<0 : 判断所有行的第一列的数是否小于0,小于0返回1,否则返回0;
那么[1;-4;7] 变为 [0; 1; 0]; 最后y( [0; 1; 0], : )=0即把第二行所有的数置为0。
9.数组操作函数:
A =[1 2 3; 4 5 6; 7 8 9]
B =flipud(A) 上下旋转
C= fliplr(A) 左右旋转
D= rot90(A) 逆时针旋转90度 (不是转置)
B=[1 2 3; 4 5 6; 7 8 9]
(1) 若A为行向列或列向量,则sum(A)为: 求和
(2)若B为几行几列的向量,
则sum(B)即sum(B,1) 为 :把B每列的数加起来
即sum(B) 为: ans = 12 15 18
sum(B,2) 为: 把B中每行的数加起来 ans = 6; 15; 25
(3)若求B中所有数的和,则sum(sum(B)) 或者 sum(B( : ))
A=[1 2 3]
max(A) 即3
max(A,2) ans = 2 2 3
B=[1 3 9; 4 8 6]
max(B) ans= 4 8 9 即取每列的最大值 等价于max(B,[],1)
max(B, [], 2) ans=9; 8 即取每行的最大值
sqrt(A): 是对A中每个元素开方,等价于 A.^0.5
如果是矩阵开方,应写成 A^0.5
10.常用数学函数:
(1)sin, cos, tan, cot, asin, acos, atan, acot:
x=0: pi/6: pi;
即x= 0.00 0.52 1.05 1.57 2.09 2.62 3.14
y=sin(x);
即y= 0.00 0.50 0.87 1.00 0.87 0.50 0.00:
同理:cos, tan, cot, asin, acos, atan, acot
(2)
abs 绝对值
sqrt 开根号
ceil 向上取整
floor 向下取整
fix 往0靠的整数
round 四舍五入取整
二、基本命令和语句
1.基本语句
(1)for end
(2)if else end
(3)while end
(4)switch case end
举例:求1-10以内的奇数和
x=0;
for i = 1:10
if mod(i,2)
x=x+i;
end
end
注意:mod(i,2)为 i除以2取余数 if(1)则执行
2.简单作图
- x= -2pi : 0.1 : 2pi; 隔0.1取一个点
- y1=sin(x);
- y2=cos(x);
- plot(x, y1, ‘-b’); 画图,x为自变量,y1为因变量,-为实线,b蓝色
- hold on 保存图像
- plot(x, y2, ‘-r’); 画图, 红色
- xlabel(‘x’) x轴说明
- ylabel(‘y’) y轴说明
- text(0, 0, ‘(0,0)’) 在点(0,0)位置上标上(0,0)
- legend(‘sin x’, ‘cos x’) 图例
- title(‘正弦和余弦’) 标题
plot直角坐标系用法:
plot(x,y) 默认蓝色
plot(x,y,s) s为字符串
plot(x1,y1,s1,x2,y2,s2,…) 把多个图一起画
简单控制语句:
title (图形名称)
xlable(x轴说明);ylable(y轴说明)
text(x, y, 图形说明)
legend(图例1,图例2,…)
grid on 把坐标画上网格线
grid off 关掉
grid minor 坐标很细
axis([xmin xmax ymin ymax]) x轴范围,y轴范围
xlim([xmin, xmax]) x轴范围
ylim 同理
其他坐标系
(1)对数坐标: loglog, semilogx
(2)极坐标:
例: theta = 0: pi/180: 4*pi; 角度
r=1-sin(theta); 距离
polar(theta, r, ‘-r’);
3.三维曲线图:
例:t=0:pi/50:10*pi;
x=sin(t);
y=cos(t);
z=t;
plot3(x,y,z);
title(‘Helix’);
xlable(‘sin t’);
ylabel(‘cos t’);
zlable(‘t’);
grid on;
小结:
函数中的3 一般表示3D,比如plot3, fill3
to 一般 表示 to ,如 str2num, num2str 即字符串转数字 数字转字符串
4 一般表示 for
3.三维曲面图:
(1)补充函数 meshgrid
[x,y] = meshgrid(1:3, 1:4)
解释:生成两个矩阵x和y,这两个矩阵均为4X3矩阵(四行三列)
其中x矩阵: 每行都是1 2 3
矩阵y: 每列都是 1 2 3 4
(2)画图函数:
mesh(x,y,z) 网格图
surf(x,y,z) 网格间有颜色的图
例:
[x,y] = meshgrid(-pi : 0.1 : pi);
z = sin(x).*cos(y);
mesh(x,y,z);
surf(x,y,z);
xable(‘x’);
yable(‘y’);
zable(‘z’);
title(‘sinx siny’);
【注意】:若x为矩阵
(1)sin(x)也为矩阵,该矩阵中数为矩阵x中数的正弦值
(2)sin(x)*sin(x) 表示 矩阵的乘法(即第一行与第一列对应乘得到第一个数,后面类推)
(3)sin(x).*sin(x) 表示 矩阵的点乘(即矩阵sin(x)中的数对应位置相乘,本例即每个数的平方)
例: x=[1 2
3 4]
则:
sin(x) = [sin1 sin2
sin3 sin4]
sin(x)*sin(x)=[sin1*sin1+sin2*sin3 sin1*sin2+sin2*sin4
sin3*sin1+sin4*sin3 sin3*sin2+sin4*sin4]
sin(x).*sin(x)=[sin1*sin1 sin2*sin2
sin3*sin3 sin4*sin4]
三、M文件与M函数
1.M函数格式
function [output1, …] = functionname (input1, …)
MatLab command 1;
MatLab command 2;
举例:求矩形面积
function area = rectarea(L, W);
%注释
area = L.*W