MATLAB复习

矩阵

定义矩阵

定义格式:

矩阵用方括号“[ ]”括起;
元素与元素 之间用 空格 或 逗号 隔开;
行与行 之间用 分号 隔开(分号可用回车代替)

例:

a=[1,2
    3,4
    5,6
    7,8];

查找矩阵元素

a(5); 从上往下,选中第五个
[m,n]=find(A>5); //A矩阵中第m行第n列的数大于5
K = length(z); //一维数组的长度
[m,n]=size(z); // 数组的维度,m行n列
b = class(A); //数组类型

特殊矩阵

x1 = linspace(-2,2,10); //定数线性采样法 x为起始值,y为终值,z为选取的数字个数
y = logspace(-3,3,10); //定数对数采样法 x为起始值(logx),y为终值(logy),z为选取的数字个数
ones(20,4) // x行y列的值全为1的矩阵
zeros(20,4) // x行y列的值全为0的矩阵
E=magic(4); //魔方数组 行、列、对角线的和都等于一个定值
D=eye(3); //对角—单位数组 x行x列
randn(2,3) //产生正态分布的x行y列的随机数组
diag(diag(a)) // 内diag取D阵的对角元素,外diag利用其生成对角阵

矩阵运算 (乘方与点乘)

x ^ 3; //数组的乘方,数组要为方阵
C=A .* B // 点乘(对应元素相乘,注意数组维度一致)

字符串数组

创建字符串

x = 'MATLAB is a good software',b=class(x),c=size(x)
//字符串的元素标识(用单引号扩起)  
//空格也占一个元素位

查找字符

x1=x(8:9),//选择第8个和第9个字符,查找单个/多个字符
x2=x(end: -1:1) // * 倒序输出 //从左往右为1 —> n,从右往左为-1—>1.
e= find(x>=‘a’&x<=‘z’)%% find找字符串找的是位数,查询所找字符的位数

字符串转换

y=double(x),//查找字符串的 ASCII 码

char(y)//查找ASCII码所对应的字符串

Y=‘例"3.2"说明’ // :中文中有英文字符,要用双引号;
YX= [Y,’ ',x] //小字符串变大字符串( 扩展字符串

upper(x)//字符串大写

m=5.8
x=['there are ',num2str(m),'kg banana']//num2str()把数字转换为字符串

创建字符串数组

字符串数组以及转换函数

YY=['12345678'
    '123     '
    '456     '
    '789     ']//创建数组时,要注意每行元素位数相同(维度一致)

元胞数组

//允许不同的数据类型合成新的数组
//元胞有两个以上则不再显示

元胞数组的创建

A = {'这是元胞数组',[1,2;3,4];ones(3,4),{'word','meet','again'}}//直接写
B(1,1)={'这是元胞数组'}//分开写
B(1,2)={[1,1;2,2]}
B(1,3)={[123;456;789]}
B(1,4)={'word'}

元胞数组的显示——celldisp和cellplot

celldisp(A)//显示所有
A{1,1}//只显示第一行第一列的元素
A{1,2}
A{2,1}
A{2,2}{1}

cellplot(A)//可视化,图片显示

元胞数组的扩充和收缩

D={[1-3*i;2+5i],{'bb';'cc';'dd'}}
C{1,1}='hello world',C{1,2}=randn(3)
CD=[C D]                  //列扩充
C_D=[C;D;C]//行扩充
cellplot(D)
cellplot( C )
cellplot(CD)
cellplot(C_D)
C_D(2,:)=[ ]                   //收缩   把空矩阵替换第二行
cellplot(C_D)

元胞数组的获取

Y=A{1,2}//被第一行,第二列的元素赋值(成为那个元素)
YG=A(1,2)//获取第一行第二列的元胞元素(一个整体获取)

结构数组

结构数组的创建

直接赋值法:结构数组名(结构序号).域 = 内容
str(1).age = '1'
str(1).name = 'str'
str(1).text = [1,2,3;4,5,6]

str(2).age = '2'
str(2).name = 'string'
str(3).text = [2,2,2;4,4,4]

来源:我自己:)

struct函数赋值法
S(1) = struct('name','str','age','1','text',[1,2,3;4,5,6])
S(2) = struct('name','string','age','2','text',[1,1,1;2,2,2])

结构数组的获取和设置

M1 = str(1)//获取结构数组第一行内容
M2 = str(1).text(1,2)   //获取结构数组第一行的矩阵的第一行第二个
M3 = str(1).text//获取结构数组第一行的矩阵
getfield 获取
M4 = getfield(str,{2},'name')//获取str结构数组第二行的'name'值
M5 = getfield(str,{2},'name',{2})///获取str结构数组第二行'name'值的第二个字母
setfield 设置
str = setfield(str,{2},'name','chi')//设置str结构数组第二行'name'的值为'chi'
fieldnames 获取所有域

M7 = fieldnames(str)

扩充
str(2,2)=struct('name','x','age','3','text',[2,2,3;4,4,6])//直接设置str结构数组的第二行第二个为结构数组。。。。

str (1,:) = [] // 让结构数组第一行为空

域名的增加与删除

str(1).zengjia = ‘增加’ // 直接增添新的域名

str = rmfield(str,‘age’) //通过 rmfield 移除

作图函数

多窗口 figure

t=0:pi/100:2*pi;
y1=sin(t);y2=sin(t+1);y3=sin(t+3);
plot(y1)
figure(2),plot(t,y2)
figure(3),plot(t,y3)

统一窗口多个子图 subplot

subplot (m,n,k) m*n 个图,第 k 个

x=0:pi/100:2*pi;
subplot(2,2,1),plot(x,sin(x))//可以逗号隔开
subplot(222),plot(x,sin(3*x))//可以不隔开
subplot(223),plot(x,sin(4*x))
subplot(224),plot(x,sin(5*x))

统一窗口多次叠绘 hold

hold on 使当前坐标系和图像保持不变
hold off 使当前坐标系和图像不保持
hold 在多个坐标系和图像中切换

t=0:pi/100:2*pi;
x=cos(3*t);y=0.001*sin(3*t+1);
plot(t,x,'-yo')
hold on
plot(t,y,'-rh')
opengl('save', 'software')

图形窗口的创建、选择、删除

plot、figure、close

t=0:pi/100:2*pi;
y1=sin(t);y2=sin(t+1);y3=sin(t+3);
plot(y1)
figure(2),plot(t,y2)
figure(3),plot(t,y3)
close(1)

双纵坐标图 plotyy

plotyy(x1,y1,x2,y2)

t=(-5):pi/100:2*pi;
y1=sin(t);y2=0.01*cos(t);
plotyy(t,y1,t,y2);grid  //  grid  网格 

坐标轴控制 (放缩) axis

axis([xmin,xmax,ymin,ymax])

t=0:0.5:7;
x=sin(t);
plot(t,x,'r-x'),grid
axis([0,3*pi,-2,2])//扩大坐标轴

网格线控制 grid

grid on
grid off
grid

t=0:0.5:7;
x=sin(t);
plot(t,x,'r-x'),grid

添加图名 title

添加坐标轴名 xlabel ylabel

x=0:0.1:3*pi;y=exp(-0.5*x).*cos(x)
plot(x,y,'r'),grid on, title('衰减的余弦函数')
xlabel('x')//括号里加字符串
ylabel('(exp(-0.5*x))*cos(x)')
t=0:0.1:7;
x=sin(t)
plot(t,x,'r'),grid on,title('正弦函数')
xlabel('t')
ylabel('sin(t)')

设置坐标刻度标示 set

两种方法:标示向量表示、字符串表示

set(gca,‘xtick’,标示向量)
set(gca,‘ytick’,标示向量)
set(gca,‘xticklabel’,‘字符串|字符串|。。。’)
set(gca,‘yticklabel’,‘字符串|字符串|。。。’)

//用向量标示坐标轴的刻度

t=0:0.1:7;
x=sin(t),plot(t,x,'r')
set(gca,'xtick',[0 1.4 3.15 5.6 6.28],'ytick',[0.1 0.4 0.6 0.8])

//用字符串标示坐标轴的刻度

t=0:0.1:7;
x=sin(t),plot(t,x,'r')
set(gca,'xticklabel',{'one','two','three','four','five','six','seven','eight'})

添加图例 legend(s,pos)在指定位置添加图例

删除图例 legend off

t=(-5):pi/100:2*pi;
y1=sin(t);y2=0.01*cos(t);
plotyy(t,y1,'-g',t,y2,': o');grid  
legend('sin(x)','cos(x)')  

添加文字注释 text

text (xt,yt,‘s’) s 为特殊字符时,要加 \

gtext(s) 用鼠标在位置上标注
t=(-5):pi/100:2*pi;
y1=sin(t);
plot(t,y1)
text(2,sin(2),'\rightarrow this is zero for \omega')
x=0:0.1:2*pi;y1=sin(x);y2=cos(x);
plot(x,y1,"r",x,y2,'bo'),grid on
title('正弦曲线和余弦曲线'),
xlabel('弧度值')
ylabel('函数值')
legend('sin(x)','cos(x)')
text(2.3,0.8,'\leftarrow 正弦函数')
text(5,0.2,'\leftarrow 余弦函数')

特殊坐标二维图型

对数坐标图形 semilogx、semilogy、loglog

semilogx(x,y,‘参数’) x轴为以10为底的对数坐标
semilogy(x,y,‘参数’) y轴为以10为底的对数坐标
loglog(x,y,‘参数’) x轴和y轴都为以10为底的对数坐标

x=0:0.05:2;y=10.^x;subplot(221)
semilogx(x,y),grid,title('semilogx graph')
subplot(222),semilogy(x,y),title('semilogy graph'),grid
subplot(223),loglog(x,y),title('loglog graph'),grid
subplot(224),plot(x,y),title('linear graph'),grid
极坐标图形 polar

polar (theta,radius,‘参数’)

t=0:0.01:2*pi;r1=1*(1+sin(t))
polar(t,r1)

条形图 bar、barth、group、stacked

垂直、水平方向
bar(x,y,‘参数’) 垂直
barh(x,y,‘参数’) 水平
group 分组
stacked 叠加

x=3:5;y=[20 30 40;5 15 20;1 2 3];
subplot(221),bar(x,y,'group')
subplot(222),bar(x,y,'stacked')
subplot(223),barh(x,y,'group')
subplot(224),barh(x,y,'stacked')

阶梯图 stairs

x=3:0.2:7;y=cos(x);
stairs(x,y,':pr'), title('两个向量的阶梯图'),                    
stairs(x,'-or'), title('一个向量的阶梯图'),   //相对于x = y 的函数
grid

基本三维图形 plot3

plot3(x,y,z,'s')
plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',....)
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t,':pg')
axis square* //产生正方形坐标系
grid on
xlabel('x'),ylabel('y'),zlabel('z'),

三维曲面 mesh、surf

[x,y]=meshgrid([-1:0.1:1])
z=x.^2 +y.^2;
subplot(121),mesh(x,y,z)
subplot(122),surf(x,y,z)

规整坐标 meshgrid

X、Y 为栅格点坐标

 [X,Y]=meshgrid(x,y)

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R )./R;

今天逛@小默haa的博客时,又发现一位大佬,然后在这个大佬的博客里又发现了MATLAB相关的文章,整合得非常不错,挂这参考——
@stronger_er—— 常用的 Matlab 的函数
后面我也或许会学习他的方式写一篇(或许吧~)。
2021.12.13.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moqim Flourite.

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值