matlab 学习笔记

目录

一 matlab基本操作

1.运算

2.矩阵

3.常用函数

向量:

矩阵:

其他:

4. 图像绘制

二维图像

 5.控制语句   

二 


一 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为函数输入值。

二 

参考借鉴:

https://blog.csdn.net/lxdfigo/article/details/8279962?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162432677016780271566509%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162432677016780271566509&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-8279962.first_rank_v2_pc_rank_v29&utm_term=matlab%E5%85%A5%E9%97%A8&spm=1018.2226.3001.4187

2 https://blog.csdn.net/weixin_45640609/article/details/104891692

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值