一个多小时速通MATLAB

原视频地址:https://www.bilibili.com/video/BV13D4y1Q7RS?from=search&seid=9311985917721407930&spm_id_from=333.337.0.0

content

1、命令行

2、常用语句

3、矩阵

4、rand随机数

5、元胞数组

6、没东西

7、结构体

8、矩阵操作

9、程序结构

10、二维平面绘图

11、三维绘图

12、图像分割

1、命令行窗口,可以直接与用户交互,当做一个计算器使用。

  清屏命令:clc

  清除工作区:clear(有些老版本应该是clear all,但是我2020b亲测好用clear)

 

2、常用语句

  字符与字符串

    s=‘s’

    abs(a) 求和嘛,其他的自己类比

    char(97) 用ASCII初始化字符

    num2str()数字转字符串

    str=‘abcdefg’

    length(str)

    等等类似的,都不写了,用到了再查,快进了

 

3、矩阵

%% 矩阵
A=[1,2,3;4,5,6;7,8,9]  %一个矩阵
B=A'  %转置矩阵
C=A(:)  %竖着拉长
D=inv(A)  %逆矩阵
E=A*D %矩阵的乘法

E=zeros(10,5,3)  %生成一个3维的都是0的矩阵
D=ones(2,4)

 

4、rand随机数

 

 

 5、元胞数组

在MATLAB中,数组都是从1开始的!

在MATLAB中,数组都是从1开始的!

在MATLAB中,数组都是从1开始的!

%% 元胞数组
A=cell(1,6) % 一行六列
A{2}=eye(3) % eye代表生成一个nxn的单位矩阵
A{5}=magic(5) % magic代表生成幻方(横竖斜对角都是相等的,而且数字从1到n的平方不重复)
B=A{5}

 

7、结构体

其实就相当于一个字典

 

 

 这里最后两行,用小括号取出来的是cell,用大括号取出来的是字符串

 

8、矩阵操作

%% 矩阵操作
B=1:2:9 % 起点:步长:终点,最终生成的是一个矩阵
C=repmat(B,3,2) % 把B这个矩阵,重复3行两列,最终合并成一个更大的矩阵

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

C=A+B
D=A-B
E=A*B' % A乘以B的转置,也就是形状相同的相乘用这个
F=A.*B % 对应项相乘(./同理,对应项相除)
G=A/B % 相当于G*B=A,两边同时乘以B的逆矩阵,则G=A*pinv(B),也就是A乘以B的逆矩阵
G=inv(B) % 求B的逆矩阵

% 矩阵的下标
A=magic(5)
B=A(2,3) % 下标检索
C=A(3,:)
D=A(:,4)

[m,n]=find(A>20) %找到A矩阵中大于20的序号,把行号存在m里,把列号存在n里

 

 9、程序结构

  for循环结构:    

  

 

 

   while循环

  

 

 

   if语句(当然可以加else,即if else end)

  

 

 

   MATLAB里面还有switch哦    

  

 

 

   

10、二维平面绘图

  demo 

%% 二维平面绘图
%%
x=0:0.01:2*pi
y=sin(x)
figure  % 建立一个幕布
plot(x,y)
title('y=sin(x)')
xlabel("x")
ylabel("sin(x)")
xlim([0 2*pi]) % 将图像尺寸在x方向上限制在什么值(0到2pi)
ylim([-2 4]) % 这个范围都是从小到大,不可以写反了

 

 

 

%% 二维平面绘图之细节
%%
x=0:0.01:20
y1=200*exp(-0.05*x).*sin(x)
y2=0.8*exp(-0.5*x).*sin(10*x)
y3=2*x
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot')
hold on %保留上面的线,继续在幕布上划线,要是不加这句话,再在这个幕布上划线的时候就会覆盖之前的线条
H3=plot(x,y3)
set(get(AX(1),'Ylabel'),'String','这是y1')
set(get(AX(2),'Ylabel'),'String','这是y2')
xlabel('这是x')
set(H1,"LineStyle",'--')
set(H2,"LineStyle",':')

11、三维绘图

%% 三维立体绘图demo
%%
t=0:pi/50:10*pi
plot3(sin(t),cos(t),t)
xlabel("sin(t)")
ylabel("cos(t)")
zlabel("t")
hold on %指保留当前线,还能继续划线
grid on %生成网格
axis square %限制三个坐标轴的长度为一致(将本来随意的三维图限制成一个三维正方体)

在写论文的时候,可能需要调节分辨率:

 

 

 

%% 双峰图
%%
[x,y,z]=peaks(30);
mesh(x,y,z)
grid

12、图形窗口分割

%% 图形窗口的分割
%%
%% subplot(几行,几列,切下来第几块(横着数))
% linspace是Matlab中的一个指令,用于产生指定范围内的指定数量点数,相邻数据跨度相同,并返回一个行向量。
% 调用方法:linspace(x1,x2,N)
% 功 能:用于产生x1,x2之间的N点行矢量,相邻数据跨度相同。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。
% 举个例子 A=linspace(-664% 运行结果如下:A=-6 -2 2 6
%%
% axis主要是用来对坐标轴进行一定的缩放操作,其操作命令主要如下:
% 1、axis( [xmin xmax ymin ymax] )    设置当前坐标轴 x轴 和 y轴的限制范围
% 2、axis( [xmin xmax ymin ymax zmin zmax cmin cmax] ) 设置 x,y,z轴的限制范围和色差范围。
% 3、v = axis 返回一个行向量,记录了坐标范围
% 4、axis auto 解除限制,恢复到默认状态
x=linspace(0,2*pi,60)
plot(x,sin(x)-1)
title("sin(x)-1")
axis([0,2*pi,-2,0])

subplot(2,2,1)
plot(x,sin(x)-1)
title("sin(x)-1")
axis([0,2*pi,-2,0])

subplot(11,11,3)
plot(x,sin(x)-1)
title("sin(x)-1")
axis([0,2*pi,-2,0])

注意,这个方法只是分割的大小,而不是内容,如下:

一个是11x11的,一个是8x8的,但是图像还是画的图像,要是想画大图的一部分图像, 或者画其它图像,直接编辑subplot之后的图像即可。

 

posted @ 2022-03-15 20:38  爱和九九  阅读(312)  评论(0)    收藏  举报