目录
一 matlab基本操作
1.运算
1 加减乘除次幂(+-*/^);备注(%);
2 如果不想每次都输出结果,加上“;”即可
eg:
>>a=1+1;
>>a
a=2
3 help+空格+有疑问的函数:即可弹出关于此函数的帮助文档
4 变量命名:第一个字母必须是英文字母;字母间不可留空格;最多只能有19个字母,MATLAB会忽略多馀字母
2.矩阵
1 基本运算常识
%运算和数学当中矩阵运算一样
>> x=[1,2,3];
>> y=x*2
y = 2 4 6
“ .* ”和 “ * ”区别:
对于矩阵和数字之间的运算,两者没什么区别,但是对于矩阵和矩阵之间,.* 表示矩阵对应元素相乘,而 * 表示矩阵乘法
平方:
>> a=[1,2,3;4,5,6];
>> a.^2
ans =
1 4 9
16 25 36
倒数:
>> a=[1,2,3;4,5,6]
a =
1 2 3
4 5 6
>> a=2./a
a =
2.0000 1.0000 0.6667
0.5000 0.4000 0.3333
向量更改增加删除:
>> a =[1,2,3];
>> a(3)=4
a = 1 2 4
>> a(5)=6
a = 1 2 4 0 6 %自动用0补齐
>> a(4)=[]
a = 1 2 4 6
>> a
ans = 1 2 4 6
>> a(1)+9 %注意这里使用的是“()”圆括号来表示第几个元素,而不是c语言中的“[]”方括号
ans = 10
>> a(1:2)*3 %取出a中第一到二个元素(矩阵)来做运算
ans = 3 6
矩阵增减:
>> a=[1,2,3;4,5,6;7,8,9]
a =
1 2 3
4 5 6
7 8 9
>> b=a(2,1)
b = 4
>> b=a(2:3) %此处理解为对2-3行切片,因为没有说明列的切片所以默认为1(数组切片具体见6.)
b = 4 7
>> b=a(2,1:3)
b = 4 5 6
矩阵合并:
a =
1 2 3
4 5 6
7 8 9
>> b=[7,7,7];
>> a=[a,b']
a =
1 2 3 7
4 5 6 7
7 8 9 7
>> b=[0,0,0,0];
>> a=[a;b]
a =
1 2 3 7
4 5 6 7
7 8 9 7
0 0 0 0
矩阵的索引和c语言中不一样,首先是按列来索引的
>> a=[1,2,3;4,5,6];
>> a(2)
ans = 4
向量创建方式:
1 常用创建(逗号空格都可):
>> a=[1,2,3,4]
>> b=[2 3 4 5]
2 起始:间隔长度:终止
>> a=1:2:10
a = 1 3 5 7 9
>> a=1:4 %步长为1可省略
a = 1 2 3 4
3 零向量/全1向量
>> a=zeros(1,3)
a = 0 0 0
>> a=ones(2,3)
a =
1 1 1
1 1 1
4 随机向量
>> a=rand(2,2)
a =
0.8147 0.1270
0.9058 0.9134
5 magic矩阵(机器学习中不用)
>> a=magic(3) %每行/列相加都是一个值
a =
8 1 6
3 5 7
4 9 2
逻辑运算
>> a=[1,2,3;3,2,1];
>> b=[2,2,2;2,2,2];
>> a>b
ans =
2×3 logical 数组
0 0 1
1 0 0
切片
数组切片:A(对行索引,对列索引)
>> a=rand(4,5)
a =
0.2238 0.6991 0.1386 0.2543 0.3500
0.7513 0.8909 0.1493 0.8143 0.1966
0.2551 0.9593 0.2575 0.2435 0.2511
0.5060 0.5472 0.8407 0.9293 0.6160
>> a(2:3,1:3)
ans =
0.7513 0.8909 0.1493
0.2551 0.9593 0.2575
>> a([2,4],:) %2,4行,“:”表示所有列
ans =
0.7513 0.8909 0.1493 0.8143 0.1966
0.5060 0.5472 0.8407 0.9293 0.6160
>> a([2,4],3) %2,4行第3列元素
ans =
0.1493
0.8407
>> a =[1,2,3;4,5,6] %变为列向量
a =
1 2 3
4 5 6
>> a(:)
ans =
1
4
2
5
3
6
3.常用函数
注:关于向量和矩阵的函数在2点中
1 abs(x):绝对值
2 sqrt(x):开平方
3 rat(x)/rats(x):将实数x化为分数表示
>> rat(1.5)
ans = 2 + 1/(-2)
>> rats(1.5)
ans = 3/2
4 floor(x)/ceil(x):向下/上取整
5 fix(x):舍去小数部分变为整数
>> floor(-1.1)
ans = -2
>> fix(-1.1)
ans = -1
6 round(x):四舍五入
7 sign(x):符号函数 (Signum function)。
当x<0时,sign(x)=-1;
当x=0时,sign(x)=0;
当x>0时,sign(x)=1。
8 三角函数
sin(x):正弦函数
cos(x):馀弦函数
tan(x):正切函数
asin(x):反正弦函数
acos(x):反馀弦函数
atan(x):反正切函数
>> sin(pi/2)
ans = 1
向量:
dot(x, y): 向量x和y的内积
>> a=[1,2,3];
>> b=[2,3,4];
>> dot(a,b)
ans = 20
sort(x): 对向量x的元素从小到大排序
sort(x,'descend'):从大到小排序
length(x): 向量x的元素个数
norm(x): 向量x的长度
>> a=[3,4];
>> norm(a)
ans = 5
diff(x): 向量x的相邻元素的差
>> a=[1,2,4];
>> diff(a)
ans = 1 2
find():寻找符合括号内为真的值
>> a=[1,2,3,4,5]
>> find(a>=3)
ans = 3 4 5
>> a=[1,5;4,2]
a =
1 5
4 2
>> [r,c]=find(a>3) %显示大于3的行数和列数
r =
2
1
c =
1
2
min(x): 向量x的元素的最小值
max(x): 向量x的元素的最大值
>> a=[1,3,4,2] %求出第一和第二大的数
a = 1 3 4 2
>> [b,c]=max(a)
b = 4
c = 3
mean(x): 向量x的元素的平均值
median(x): 向量x的元素的中位数
std(x): 向量x的元素的标准差
sum(x): 向量x的元素总和
prod(x): 向量x的元素总乘积
cumsum(x): 向量x的累计元素总和
cumprod(x): 向量x的累计元素总乘积
>> a=[1,2,3,4];
>> sum(a)
ans = 10
>> prod(a)
ans = 2
>> cumsum(a)
ans = 1 3 6 10
>> cumprod(a)
ans = 1 2 6 24
矩阵:
inv(x):计算逆矩阵
x':x转置
flipub():垂直翻转
a =
1 0 0
0 1 0
0 0 1
>> flipud(a)
ans =
0 0 1
0 1 0
1 0 0
max()/min():
a =
8 1 6
3 5 7
4 9 2
>> max(a)或者max(a,[],1) %都是求每列的最大值
ans =
8 9 7
>> max(a,[],2) %求每行最大值
ans =
8
7
9
>> max(max(a)) %求矩阵中最大的数
ans = 9
sum():
>> a=[1,2;3,4]
a =
1 2
3 4
>> sum(a)或者sum(a,1) %求每列
ans = 4 6
>> sum(a,2) %求每行
ans =
3
7
>> sum(sum(a))
ans = 10
diag():返回对角线上的元素
>> a=[1,2,3;4,5,6]; %并非必须方阵
>> diag(a)
ans =
1
5
zeros(a,b):创建a*b的0矩阵
ones(a,b):创建a*b的1矩阵
reshape():
>> a=1:8
a = 1 2 3 4 5 6 7 8
>> reshape(a,2,4)
ans =
1 3 5 7
2 4 6 8
rand()/randn():随机数
>> a=rand(1,3)
a =
0.7060 0.0318 0.2769
>> a=randn(2,3) %高斯分布的随机数:均值为0,标准层方差为1
a =
0.4889 0.7269 0.2939
1.0347 -0.3034 -0.7873
eye():单位矩阵
>> a=eye(3)
a =
1 0 0
0 1 0
0 0 1
exp(x):e^x,即x中所有元素取e^x
logk(x):x矩阵中所有元素取对数(其中k为对数的下标,无k默认为10)
>> a=[2,4;8,16];
>> log2(a)
ans =
1 2
3 4
其他:
angle(z):复数z的相角
real(z):复数z的实部
imag(z):复数z的虚部
conj(z):复数z的共轭复数
who/whos:显示现有变量(whos要详细一点)
clear x:清除变量x(如果只有clear,那么就是清除所有变量)
save:保存数据(eg:save hello.mat x---将x的数据保存在hello.mat
文件中。
load:导入某个数据(eg:load hello.mat)
注:因为文件路径默认是在E:\matlab\bin中,所以save和load都是在bin这个文件夹中进行操作。
pwd:显示当前路径
cd:修改路径(eg: cd 'c:\Users\10611\Desktop'---修改路径到桌面)
4. 图像绘制
二维图像
>> x=[0:0.1:2]; %x取0-2之间的数间隔为0.1
>> y1=sin(x*pi); %y(x)函数
>> plot(x,y1)
>> hold on;
>> y2=cos(x*pi);
>> plot(x,y2,'r') %r表示红色
>> xlabel('x'); %横坐标标记为x
>> ylabel('y'); %纵坐标标记为y
>> legend('y1/sin','y2/cos'); %左上角的标记
>> title('我的图像');
>> cd 'C:\Users\10611\Desktop'; print -dpng '我的图像.png'; %保存图像到我的桌面
>> close %关闭图像
>> figure(1);plot(x,y1);
>> figure(2);plot(x,y2);
>> subplot(2,2,1); %2*2的格子,使用第一个格子绘图
>> plot(x,y1,'g');
>> subplot(2,2,4); %2*2的格子,使用第四个格子绘图
>> plot(x,y2,'b');
>> a=[1,2,3;4,5,6;7,8,9]
>> imagesc(a);
>> colorbar;
>> colormap grey; %grey也可替换为:winter,summer
5.控制语句
for循环/while循环/if语句:
>> for i=1:4,
a(i)=3+i;
end;
>> a
a =
4 5 6 7
>> i=1; %下标从1开始
while i<5,
s(i)=0;
i=i+1;
end;
>> s
s = 0 0 0 0
a=1
>> a=1;
if a==1,
disp('a=1');
elseif a==2, %elseif连着写
disp('a=2');
else disp('no') %else不用加逗号
end;
a=1
>>
break语句和c同理。
输出:
disp(i);
定义函数:
首先输入>> edit,然后在编辑器中编辑对应的函数,之后保存在对应的工作文件夹下然后就定义成功。
格式:function [a,b,c] = funname(x1,x2,x3)------其中[a,b,c]为返回值(也可单独为一个变量,就不需要括号了),x1,x2,x3为函数输入值。
二
参考借鉴:
2 https://blog.csdn.net/weixin_45640609/article/details/104891692