MATLAB基础

1 MATLAB界面

主界面: 附件/Pasted image 20210818004547.png

命令行 Command Window

命令历史 Command History clc: 清除命令窗口的内容

工作空间 Workspace:

who:列出当前工作空间的变量 whos:列出当前工作空间的变量及其大小、类型 clear:清空当前工作空间的变量 clear all:清除工作空间的所有变量,函数,和MEX文件 save : 保存工作空间为.mat 二进制文件, load:恢复工作空间


clear all; % 清除工作空间中的变量
x = 1:10;
save testfile.dat x -ascii % 将x以ASCII格式存至名为testfile.dat的档案
load testfile.dat % 载入testfile.dat


帮助文档 WEB版

文件夹 (Set Path)

脚本编辑界面

2 变量和基本运算

数学公式般的运算方式

变量: 弱类型变量,不需要声明类型或维度 编辑技巧

注释标识% 行结尾标识;, 用于隐藏输出 换行标识..., 语句过长时用来换行 format style 约束显示格式为指定style格式

数值型变量支持四则运算,幂运算 字符型变量用双引号表示

t = "Hello, world"; % 文本包含双引号时候需要用两个双引号
q = "Something ""quoted"" and something else." 
tempText = "Temperature is " + c + "C" % 拼接字符
disp(tempText) % 屏幕输出函数,类似于c语言中的printf())函数

数组(向量,矩阵)

x = [1 3 5 2];  % 行向量:元素用逗号 (`,`) 或空格分隔
y = [1 2 3; 4 5 6; 7 8 10] % 矩阵:使用分号分隔各行
z=y^2+1% 允许使用单一运算符或函数来处理矩阵中的所有值
Y = [y,y] % 矩阵水平串联 3*6
Y = [y;y] % 矩阵垂直串联 6*3
Y(:,2) = [] % 删除第二列
Z=Y' % 矩阵转置
find(isprime(Y))' % 返回矩阵中质数的索引
reshape(A,n,m) % 矩阵维度转换

四种基本矩阵

zeros(m,n) % 生成m*n零矩阵
ones(m,n) % 生成m*n全1矩阵
rand(m,n) % 生成服从均匀分布的m*n矩阵
randn(m,n) % 生成服从正态分布的m*n全1矩阵

复数与矩阵:表示复数的虚部,请使用 ij

c = [3+4i, 4+3j; -i, 10j];

索引:访问数组/字符串的选定元素

线性索引:A[8] % 按列遍历所得的第八个 指定行和列:A(4,2) % 第四行第二列元素 冒号索引:A(3,:) % 第三行中的所有元素 范围索引:A(1:3,2) % 前三行的第二列元素

函数:内置常用函数包括固有函数基本运算函数三角函数向量运算函数

使用 doc 命令在单独的窗口中打开函数文档

doc mean

使用 help 命令可在命令行窗口中查看相应函数的简明文档。

help mean

3 基本绘图

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
xlabel('x')
ylabel('sin(x)')
title('Plot of the Sine Function')

附件/Pasted image 20210818150657.png

3.1 hold on / hold off

要将绘图添加到现有图窗中,请使用 hold on。 在使用 hold off 或关闭窗口之前,当前图窗窗口中会显示所有绘图。

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
hold on 
y2 = cos(x);
plot(x,y2,':')
legend('sin','cos') % 图例
hold off

附件/Pasted image 20210818151210.png

3.2 subplot 子图

使用 subplot 函数可以在同一窗口的不同子区域显示多个绘图。

cylinder函数:用于返回三维圆柱图坐标 mesh函数:用于绘制三维网格曲面

t = 0:pi/10:2*pi;

[X,Y,Z] = cylinder(4*cos(t)); subplot(2,2,1); mesh(X); title('X'); subplot(2,2,2); mesh(Y); title('Y'); subplot(2,2,3); mesh(Z); title('Z'); subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z');

![附件/Pasted image 20210818152215.png](http://img.banxian-w.com/KG_ALLinOne/1_study/MATLAB/附件/Pasted%20image%2020210818152215.png)

3.3 样式与绘图设置

绘图颜色与类型


x1 = 0:pi/100:2pi; x2 = 0:pi/10:2pi; plot(x1,sin(x1),'r:',x2,sin(x2),'r+')

![附件/Pasted image 20210818162618.png](http://img.banxian-w.com/KG_ALLinOne/1_study/MATLAB/附件/Pasted%20image%2020210818162618.png)

样式列表

符号|颜色||符号|线型||符号|标记类型| |---|---|---|---|---|---|---|---| 'c' | 青蓝||'-'|实线||'+' |加号 'm' | 品红||'--' |虚线||'o' |空心圆
'y' | 黄 ||':' |点线 ||'*' |星号
'r' | 红 ||'-.' | 点划线|| 'x' |字母 x 'g' | 绿 ||无字符|没有线条||'s' |空心正方形
'b' | 蓝 |||||'d' |空心菱形
'w' | 白 |||||'^' |空心上三角
'k' | 黑 |||||'v' |空心下三角
|||||||'>' |空心右三角
|||||||'<' |空心左三角
|||||||'p' |空心五角形
||||||| 'h' |空心六角形

限定轴范围 axis([xmin,xmax,ymin,ymax])

对数化刻度

loglog: 全对数函数,x,y都变为常用对数刻度 semilogx: 半对数函数,x变为常用对数刻度,y轴仍是线性刻度 semilogy: 半对数函数,x仍是线性刻度,y轴变为常用对数刻度。

3.4 图像读取和写入

使用 imread(filename) 函数可以读取标准图像文件(TIFF、JPEG、PNG 等)。imread 返回的数据类型取决于读取的图像类型。

使用 imwrite(A,filename)函数可以将图像数据A写入到各种标准图像格式。

使用 imshow(X,map) 函数进行图像的显示,其中map是图像数组X对应的颜色图。

4 程序流控制与脚本

4.1 if .... end 条件控制

a = randi(100, 1);

if a < 30
    disp('small')
elseif a < 80
    disp('medium')
else
    disp('large')
end

4.2 switch .... end 条件控制

[dayNum, dayString] = weekday(date, 'long', 'en_US');

switch dayString
   case 'Monday'
      disp('Start of the work week')
   case 'Tuesday'
      disp('Day 2')
   case 'Wednesday'
      disp('Day 3')
   case 'Thursday'
      disp('Day 4')
   case 'Friday'
      disp('Last day of the work week')
   otherwise
      disp('Weekend!')
end

4.3 for ... end 循环

for i = 1:m
   for j = 1:n
      H(i,j) = 1/(i+j);
   end
end

5 while ... end 循环

i=1;
while true
    p = p*i;
    i = i+1;
    if i>8:
    	break
    end
end

continue:跳出本轮循环,进入下一轮 break:跳出并终止循环

脚本和函数

6 m文件

  1. 当需要执行大量或重复代码时使用
  2. 文件名即执行命令名
  3. 第一注解行通常用来简短说明此m文件的功能
  4. pwd:确定当前工作目录

7 脚本

  • 不接受输入参数或返回输出参数
  • 可以直接处理工作空间中的数据
  • 方便大量代码的存储和反复修改
  • 输出数据会保留在公共工作空间

8 函数

  • 可接受输入参数并返回输出参数
  • 只能处理自身工作空间中的数据
  • 通过提炼封装重复逻辑精简代码
  • 返回值外的变量是函数私有变量
% fact.m:  
function output = fact(n)  
% FACT Calculate factorial of a given positive integer.  
    output = 1;
    global i % 全局变量声明 可实现私有变量的全局读取
    for i = 1:n,   
    	output = output*i;   
    end
end
fact(3) % 执行m文件

往年同期文章