欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Matlab基础

程序员文章站 2022-03-20 08:23:11
...

一、基本命令和语句

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.简单作图

  1. x= -2pi : 0.1 : 2pi;           隔0.1取一个点
  2. y1=sin(x);
  3. y2=cos(x);
  4. plot(x, y1, ‘-b’);             画图,x为自变量,y1为因变量,-为实线,b蓝色
  5. hold on                         保存图像
  6. plot(x, y2, ‘-r’);               画图, 红色
  7. xlabel(‘x’)                       x轴说明
  8. ylabel(‘y’)                       y轴说明
  9. text(0, 0, ‘(0,0)’)             在点(0,0)位置上标上(0,0)
  10. legend(‘sin x’, ‘cos x’)     图例
  11. title(‘正弦和余弦’)             标题

plot直角坐标系用法:
plot(x,y)     默认蓝色
plot(x,y,s)    s为字符串
plot(x1,y1,s1,x2,y2,s2,…)    把多个图一起画
Matlab基础

简单控制语句:
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’);
Matlab基础

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;
Matlab基础

小结:
函数中的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