Matlab笔记---matlab入门知识整理

时间:2024-02-22 07:07:37

Matlab是matrix&laboratory两个词的组合(矩阵实验室)

  • 左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示。
  • Current Folder:中文一般翻译成工作路径,一般设置成一个自己建立的、有读写权限的文件夹,例如我的文档下建立一个matlab文件夹。
matlab的当前工作路径只有选中才能调用其中的文件:
  在MATLAB界面的地址栏中的地址,就是代表当前的运行工作目录,在命令行窗口中输入cd,敲击回车也可以查到当前的工作路径,是和地址栏中的 路径一致的。
  修改工作路径的格式命令如下cd(\'需要设定为工作路径的地址\'),敲击回车就会生效。例如文中将C:\Users\A\Documents\MATLAB设为工作路径。
  或者在命令行窗口中输入pathtool,敲击回车,接着会弹出设置路径的窗口。点击添加文件夹或者添加包含子文件夹的文件,可以通过左侧的按钮移动位置(上移、下移动、移动至底端)。保存生效。
  • Command Window:字面意思是命令窗口,用来运行代码,所有的代码都是在这里输入Workspace:字面意思是工作空间,其实就是暂存所有运行结果的地方,“暂”的具体含义是:关闭matlab后丢失。

 W3School学习传送门:https://www.w3cschool.cn/matlab/matlab-o7xk28j0.html

一、软件中的基本概念

1 .1 函数

     matlab之所以强大,就是因为提供大量的函数,你也可以建立自定义函数,方法是:Home->New->function。自定义函数一般保存在工作路径下。函数文件的特征是:扩展名m,内容的第一行以function开头,后续内容是“输出变量=函数名(输入变量)”。且函数名和文件名相同。

    每个函数在Command Window中运行,用来完成特定的计算任务,运行方式是输入“输出变量=函数名(输入变量)”,然后按回车。例如有个系统自带的函数是用来求绝对值的,函数名abs,所以在Command Window里输入“a=abs(-1)”,就会显示运算结果为“a=1”。且运算结果会在Workspace里出现一个变量a,双击后可看到a的值是1。

定义函数:

function [输出参数] = 函数名(输入参数)
函数体
end

例子:

function d =myfunc(a,b,c)
  %实现abc的计算
  d=(a^2+b)/c;
end

注意事项:函数名和文件名一样,函数只能被调用,不能被直接执行,因为没有输出参数。

     grid on //打开图像的网格

-----------------------------------------------批量读取文件------------------------------------------------------
clear;clc;close all
jpgimages=dir(\'myfolder\*.jpg\');  % 读取指定文件夹下所有.jpg文件的信息
N=length(jpgimages);   % .jpg文件的个数

Names={};   % 用于存放.jpg文件的文件名
IMs={};     % 用于存放每个.jpg文件的图像矩阵

for k=1:N
    Names{k}=jpgimages(k).name;     % 依次得到.jpg的文件名,存放在Names元胞数组里
    IMs{k}=imread([\'myfolder\\' Names{k}]);  % 依次得到.jpg的图像矩阵,存放在IMs元胞数组里
    figure(k);
    imshow(IMs{k});
end

1.2 脚本

    可以理解为特殊的函数,这种函数内容的开头没有function那行,因此没有输入、输出变量,也没有函数名。文件扩展名和函数一样是m,也需要在Command Window里运行。脚本都是用户建立的,方法是:Home->New Script。一般保存在工作路径下。脚本的功能就是完成用户需要的、复杂的计算任务,通常脚本里会调用很多函数

1.3 GUI

    一般翻译为界面,就是人机交互界面的意思。写脚本处理问题的方法有点麻烦,让人看起来更像是码农,所以现在很多问题可以通过界面点点鼠标解决。这时候就需要打开界面,打开方法是:在APPS标签里可以找到所有已安装的GUI工具,单击即可。注意右边有个小三角可以点开。和函数一样,用户也可以自己建立自定义GUI。

1.4 toolbox

    一般翻译成工具箱,matlab将功能相近或者应用上自成体系的一组函数和GUI打包成一个toolbox。正版的matlab在购买时,几乎每一个toolbox都是要单独收费的,所以toolbox也可以理解为matlab产品的模块,一个工具箱就是一个产品/商品。

1.5 simulink

    一般用matlab解决问题的过程是:用户自定义脚本,在Command Window里运行脚本。而脚本的运行逻辑是顺序执行,和一般的编程一样。simulink则提供另一种思路,图形化编程,有点像labview,这种方法很适合于物理模型的仿真,因此有时用“matlab编程”和“simulink仿真”强调。使用方法是在home标签下点击simulink。

1.6 获得帮助

  • cn.mathworks.com官网上找到支持,然后可以获得教程。
  • 在Command Window里输入 doc+函数名 来获得帮助。比如输入"doc fft"可以获得离散傅里叶变换函数fft的帮助和范例。这种方法获得的文档是前两种方法文档中的部分。当然,前提是你要知道函数名,才能找到帮助。这种方法适合于获得系统自带函数的使用说明。
  • 使用GUI时,通常界面的角落里有Help,点开可以获得帮助。这种方法获得的文档是第一和第二种方法文档中的部分。这种方法适合于获得系统自带GUI的使用说明。

  这几种方法中,最常用的是第二种,只要知道自己需要的函数名,就可以用这种方式获得说明和范例。而实际使用中,一般常用的系统自带函数,也并不是非常多,大概几十个?真正需要牢记使用方法的可能就几个,通常都是知道函数名,要用的时候doc一下。

二、命令窗口的基本配置

2.1 format命令

进行数据类型转换,行间距调节等功能时,用

        format + 关键词 回车

eg:format long 回车   //将数据变为长整型

        format compat/loose 回车  //调节行间距紧密/松散

2.2 clc命令  

清屏。即清理当前屏幕上的内容,屏幕上没有了,但保留在内存中了

2.3 clear命令 

    删除某一变量,或清空工作区

    clear + 变量名 回车

    eg:clear a 回车  //删除工作区中的a变量

            clear或者clear all //清空工作区。建议在刚打开matlab窗口时先清空一下工作区。

2.4 whos命令  

    查看某变量详细信息

   whos 回车  //查看所有变量信息

   whos + 变量名 回车 // 查看该变量详细信息

2.5  x/ylable命令  //给xy轴加横纵坐标说明

2.6 disp()  //屏幕输出函数,类似于c语言中的printf()函数

  disp函数直接将内容输出在Matlab命令窗口中,关键是看disp函数怎么把字符和数字在一起进行显示。

  disp(X)函数只有一个输入,当你有多个字符串作为输入时就会报错。

例如:

       disp(\'Alice is \' , num2str(12) , \' years old!\' );

  就会报错--输入参数过多。但是将里边的内容用中括号一括就成了一个字符串,

例如:

        str=[\'Alice is \' num2str(12) \' years old!\'];

        disp(str);

上边这句话也就等价于:

        disp=([\'Alice is \' num2str(12) \' years old!\']);

这就是加中括号的原因,而不是因为num2str(),因为disp(num2str(12));也是正确的,因为里边就只有一个字符串。

2.7 zeros函数   %创建一个全为零元素的数组

  1.  B = zeros(n) 返回一个n x n的零矩阵.如果n不是一个标量,将抛出错误。
  2.  B = zeros(m,n) or B = zeros([m n]) 返回一个m x n的零矩阵。
  3.  B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。
  4.  B = zeros(size(A)) 返回一个和A一样大小的零数组。
  5.  zeros(m, n,...,classname) or zeros([m,n,...] 返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double\', \'single\', \'int8\', \'uint8\', \'int16\', \'uint16\', \'int32\', or \'uint32\'
  6.  示例
  7.  x = zeros(2,3,\'int8\');
  8.  备注
  9.  MATLAB语言 没有一个 维度 声明 ; MATLAB 自动为矩阵分配存储空间。 然而,对于大型矩阵 , MATLAB程序可能会执行得更快 ,如果零函数用于设置一个矩阵,其元素将产生一次 , 或行或列的时间预留存储空间。

 三、matlab定义和初始化变量:一般形式: 变量 = 表达式(数)

在MATLAB中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。

在MATLAB中,变量名区分字母的大小写。

直接输入,类似:

x=2

x=[1,2,3]    %或者 x=[1 2 3]

y=[1 2 3;4 5 6]

A=[1 2;3 4]

B=[3 4;5 6]

a = [1 2 3 ; 4 5 6 ; 7 8 9 ]    %矩阵形式赋值.
a = 1:2:10                      %固定步长的矩阵.
zeros(3,2)                      %三行两列的全零矩阵.
who                 %   检查工作空间的变量
whos                %   检查存于工作空间变量的详细资料
a =

     1     2     3
     4     5     6
     7     8     9

a =

     1     3     5     7     9

ans =

     0     0
     0     0
     0     0

Your variables are:

A    B    C    X    Y    Z    a    ans  b    f1   f2   fs   i    num  t    x    y    y1   y2   yy   

  Name       Size             Bytes  Class     Attributes

  A          3x3                 72  double              
  B          3x3                 72  double              
  C          3x3                 72  double              
  X         21x21              3528  double              
  Y         21x21              3528  double              
  Z         21x21              3528  double              
  a          1x5                 40  double              
  ans        3x2                 48  double              
  b          1x32               256  double              
  f1         1x1                  8  double              
  f2         1x1                  8  double              
  fs         1x1                  8  double              
  i          1x1                  8  double              
  num        1x1                  8  double              
  t          1x221             1768  double              
  x          1x21               168  double              
  y          1x21               168  double              
  y1         1x126             1008  double              
  y2         1x126             1008  double              
  yy         1x221             1768  double   

四、基本运算:

除常用的加减乘除运算外,还包括矩阵运算。

例如:

1.自增:x=1 

    x=x+1

2.矩阵相加:

A+B=[4 6;8 10]

注意事项:A*B 表示数学中的矩阵乘法,A.*B表示矩阵对应位置数据相乘。

  • A( i , : ) 表示 A矩阵的第 i 行所有元素
  • A( : , j ) 表示 A矩阵的第 j 列所有元素
  • A( : , : ) 表示 A矩阵的 所有元素
  •  A(:) // 是将A矩阵按列排成一列
  • 定义函数时,函数中有嵌套函数需要在结束时加end;其他情况可加可不加
  • length(A):求矩阵A的所有维度中的最大值
  • pause(a)表示程序暂停a秒后继续执行;只有pause;并没有参数a,这样的意思是程序暂停,按任意键程序继续执行。
  • ones()返回元素全为1的矩阵
  • zeros()返回元素全为1 的矩阵
  • size(A,1)返回矩阵A的行数
  • size(A,2)返回矩阵A的列数
  • surf(x,y,z)绘制曲面图
  • contour()绘制等高线图

 3.常用函数:

%* norm    范数
% * det     行列式
% * inv     方阵的逆矩阵
% * size    矩阵的阶数
% * rank    秩
% * trace   迹
% * eig     特征值和特征向量
% * ^       乘方运算
% * sqrtm   开方运算
% * expm    指数运算
% * logm    对数运算
A = [6 7 5 ; 3 6 9 ; 4 1 5 ]
B = 20 + A
C = inv (A) * B

eig(C)      %求矩阵的特征根

% 矩阵的乘方运算和开方运算
A = [6 7 5 ; 3 6 9 ; 4 1 5 ]
B = A^2
C = sqrtm(B)
A =

     6     7     5
     3     6     9
     4     1     5

B =

    26    27    25
    23    26    29
    24    21    25

C =

    3.8571    2.8571    2.8571
   -0.9524    0.0476   -0.9524
    1.9048    1.9048    2.9048


ans =

    4.8095
    1.0000
    1.0000

A =

     6     7     5
     3     6     9
     4     1     5

B =

    77    89   118
    72    66   114
    47    39    54

C =

    6.0000    7.0000    5.0000
    3.0000    6.0000    9.0000
    4.0000    1.0000    5.0000

五、 程序控制语句

  • if语句
  • 循环语句

5.1 if语句

x = 32 ; y = 86;
if x > y
    \'x 大于 y\'
elseif  x < y
    \'x 小于 y\'
elseif x == y
   \' x 等于y\'
else \'error\'
end
ans =

x 小于 y

5.2 循环语句:for 循环的基本格式为:

for 循环变量 = 起始值 : 步长 : 终止值
   循环体
end
% for循环使用示例
a = 0;
for i = 1:1:10
    a = a + i ;
end
a
a =

    55
  • while循环语句基本格式为

while    表达式
     循环体
end

 % while循环使用示例

num = 0; a = 5;
while a >1
    a = a/2;
    num = num + 1;
end
num
num =

     3

六、基本绘图方法

  • plot 二维线性图
  • subplot 绘制子图
  • figure() 创建一个图的窗口
  • titel 图的标题
  • xlabel x坐标
  • ylabel y坐标
  • grid 图显示网格
  • hold 保持当前图形
  • clf 清除图形和属性
  • mesh 三维网线图
  • plot3 三维图形
  • surf 三维表面图
  • 绘图的基本步骤
  • 三维图形的绘制
  • 空间曲面的绘制

6.1 绘图的基本步骤:

x = -pi:.1:pi;
y1 = sin(x);
y2 = cos(x);        %准备绘图数据
figure(1)           %打开图形窗口
subplot(2,1,1)      %确定第一幅图绘图窗口
plot(x,y1)          %以x,y1绘图
title(\'绘图的基本步骤\') %为第一幅图设置标题:"绘图的基本步骤"
grid on             %显示网格线

subplot(2,1,2)      %确定第二幅图绘图窗口
plot(x,y2)          %以x,y2绘图
xlabel(\'time\')      %为第二幅设置x坐标名\'time\'
ylabel(\'y\')         %为第二幅设置y坐标名\'y\'

figure(2)           %打开图形窗口
subplot(1,2,1),stem(x,y1,\'r\')       %绘制红色的脉冲图
subplot(1,2,2),errorbar(x,y1,\'g\')   %绘制绿色的误差条形图

 

6.2 三维图形的绘制

figure(3)
x = 0:0.1:4*pi;
y1 = sin(x);
y2 = cos(x);
plot3(y1,y2,x)
title(\'绘图的三维图形\')
grid on

6.3 空间曲面的绘制

x = [-2:0.2:2];
y = x;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);

subplot(2,2,1)          % 绘制子图第一幅
surf(Z);
shading flat

subplot(2,2,2)           % 绘制子图第二幅
mesh(Z);

subplot(2,2,3)           % 绘制子图第三幅
meshc(Z)

subplot(2,2,4)           % 绘制子图第四幅
surfl(Z)
view(20,7)

 

 

参考博客:

https://www.cnblogs.com/xilifeng/archive/2012/09/01/2666484.html#1

https://blog.csdn.net/qq_37764129/article/details/80070794

https://blog.csdn.net/C1664510416/article/details/81749870