矩阵操作

1
2
3
4
5
A=[1 2 3 ; 4 5 6 ; 7 8 9]
B=A’ %代表A的转制
C=A(:) %把矩阵输出成一长列
D=inv(A) %对A求逆,但A必须是方阵,
F=det(A) %求A的行列式的值,但A必须是方阵,可以用来检验A矩阵可不可逆,因为行列式值为0的矩阵无逆矩阵。

多维矩阵

1
2
3
4
5
6
7
8
9
10
11
C=zeros(5,4,3)
%% 生成一个3维矩阵,其中每一维都是5行4列的0矩阵
C(:,:,1)=rand(5,4)
%% 在第一维矩阵随机生成范围在0-1的一个5行4列的矩阵
E(:,:,3)=randi([iMin,iMax]5,4)
%% 在第三维矩阵随机生成一个5行4列的整数矩阵,其中最大值为iMax,最小值为iMin
E(:,:,2)=randn(5,4)
%% 在第二维矩阵随机生成一个5行4列,符合标准正态分布(均值为0,方差为1)的随机矩阵



A=1:2:9

1
A=1:2:9

输出1 3 5 7 9,中间的2是步长

repmat ones zeros

1
2
3
4
B=eye(3); % 生成一个3阶单位阵
C=repmat(B,3,2) % C是复制B矩阵,行方向复制3次,列方向复制2次
D=ones(3,2) % 生成一个3行2列的矩阵,其中每个元素都是1
D=zeros(3,2) % 生成一个3行2列的矩阵,其中每个元素都是0

矩阵四则运算

1
2
3
4
5
A=[1 2 3;4 5 6]
D=A+A % 对应项相加
B=A*A' % A乘A的转置,因为矩阵相乘必须遵循m*nXn*m
C=A.*A % 乘号前带一个点表示两矩阵对应项相乘
E=A/A % 两矩阵相除相当于左边的矩阵乘右边矩阵的逆矩阵

矩阵的下标

1
2
3
4
A=magic(5) % 生成一个5阶幻方
B=A(3,:) % B等于A矩阵的第三行
C=A(:,4) % C等于A矩阵的第四列
[M,N]=find(A>18) % 找出A矩阵中的元素大于18的位置,行数用M表示,列数用N表示

MATLAB的数组是从“1”开始

元胞数组

1
2
3
4
A=cell(4) %4x4的cell数组
A=cell(1,4) %一行四列的cell数组
A{1,1}=magic(5) %在cell数组第一行第一列放入一个5阶幻方(幻方就是横竖斜相加都等于同一个值的方阵)
A{1,2}=eye(3) % 在cell数组第一行第二列放入一个3阶单位阵

程序结构

for循环

1
2
3
for i=1:1:5  %从1开始循环,每次步进1,可以不写出步进长度,一直到5结束
xxxxxxxxxxx
end

while循环

eg: 求1+2+3……+10的和

1
2
3
4
5
6
a=0;
contain=0;
while a<10
a=a+1
contain=contain+a
end

if/else

1
2
3
4
5
if a>b
xxxxxxxxxxx
else
xxxxxxxxxxx
end

二维图

1
2
3
4
5
6
7
8
x=0:0.01:2*pi;
y=sin(x)
figure %每当有一个新图,都要先figure一下,作用是生成一个新画布
plot(x,y) %plot的中文意思是:图表
title('sinx') %图表的标题
xlabel('x') %对x轴的说明
ylabel('y') %对y轴的说明
xlim([0 2*pi]) %限制整个表格左右边界,让表格更美观

双曲线二维图

1
2
3
4
5
x=0:0.01:20;
y1=sin(x);
y2=cos(x);
figure
[AX,H1,H2]=plotyy(x,y1,x,y2);

plotyy

plotyy返回三个值:

第一个是控制两个坐标轴的id,AX,其实有两个,分别是AX1和AX2。

第二个和第三个分别是控制两条曲线的id,分别是H1和H2。

set

书接上文,set可以对AX,H1,H2进行控制。

1
2
3
4
5
6
7
8
9
set(AX,'fontsize',14) %控制两个坐标轴的字体大小变为14
set(H1,'color','r','lineStyle','--')
%把H1曲线改成红色的虚线。
set(H2,'Color','b','LineStyle',':')
%把H2曲线改成蓝色的点点线。
set(get(AX(1),'ylabel'),'string','sinx曲线')
%把第一个坐标轴的y轴名称改为“sinx曲线”
set(get(AX(2),'ylabel'),'string','cosx曲线')
%把第二个坐标轴的y轴名称改为“cosx曲线”

三维图

1
2
3
4
5
6
7
8
9
x=0:0.01:20*pi;
y=sin(x);
z=cos(x);
figure
plot3(x,z,y) %设置三维图
xlabel('x')
ylabel('sinx')
zlabel('cosx')
grid on %为图像加网格,主要起美化作用

peaks

1
2
3
[X,Y,Z]=peaks(30); %生成一个带有很多峰的三维图像,30表示网格密度。
mesh(X,Y,Z) % mesh生成网格图,无填充,surf生成填充图。
grid % 输入grid就会抹去背景的网格线。

meshgrid

meshgrid 的作用就是:
它把一维的 ab,复制粘贴成了二维的平面 XY,让每一个点都有了自己的坐标。

1
2
3
4
5
6
a=-2:0.1:2;
b=-2:0.1:2;
[X,Y]=meshgrid(a,b); % 把a和b两个数组连接成一个平面,一个二维矩阵。
Z=X.^2+Y.^2; % 对X和Y矩阵中的每一个元素分别平方后相加,要在乘法前加一个点,如果只是单纯的乘法,那将是两个矩阵进行矩阵相乘。
surf(X,Y,Z) % 把X,Y,Z三组二维矩阵拼在一起组成一个3维空间,且是填充图。
grid % 去掉背景网格。