该笔记的整理基于台湾大学郭彦甫的matlab教程视频:
点击查看【bilibili】

1.基本操作与矩阵输入

有关基本的数学运算和矩阵运算,可以参见CSDN的一篇分享:
一.界面
MATLAB桌面组成.xmind
image.png
二.数值计算
一些基本的数值运算。

三.变量(MATLAB中的变量定义不用宣称类型,默认double类型)
Ps:
(1)变量大小写有区别
(2)特殊的变量与常数:ans , i,j, inf, NaN, pi, eps=2.2304e-16
(3)优先级:variable>built infunction>sub function>private function>mex-file>p-file>M-file
(4)workspace清空:clear all—-清空所有变量,clear _—-清空某个变量,clc—-清除命令窗口
(5)数值显示的格式
image.png
(6)”;”和“:”的含义
“;”表示一段语句的结束,计算结果不会被保存在workspace里
“:”用来创造向量(eg: j:k——[j, j+1, j+2, ….j+m], j:i:k——[j, j+i,……j+m*i])
四.矩阵输入

五.编写脚本
image.png

  1. function搜索

界面上“_f_x”按钮可以搜索函数

  1. 注解

%——-comment
%%——section(可以执行某个section,在debug中很有用)
用%%将不同的section隔开,选中某section,可以选择run section来运行某个部分的程序

  1. debug

设置断点(break point)
Continue—-继续程序

  1. 缩排

Smart indent,智能缩排,选择相应的语句,然后右击鼠标,选择smart indent可以实现自动缩排

六.结构化程序设计(structured programming)
结构化编程的详细内容,见下述链接:

  1. Flow control | If, elseif, else———-end
    说明:condition成立,则执行statement | image.png | | —- | —- | | Switch, case, otherwise——————end
    说明:依据expression的值与哪一个value相等,则执行哪一个statement | image.png | | Try, catch———end |
    | | While———-end
    说明:expression为真,则执行statement | image.png |

  2. Logical operators

image.png

  1. Pre-allocating space to variables

事先给变量分配空间,可以提高程序运行效率。

  1. tic toc(程序计时)

    2.变量与档案存取

  2. Variables

  • 变量类型转换

1.png

  • Character(字符)

一个字符代表的ASCII码0~255中的数,
27.png
字符与ASCII码对应表格
2.png

  • String

字符串拼接(string concatenation),三种方法:
1)利用方括号
26.png
2)利用strcat拼接函数
strcat(s1,s2)
3)利用sprintf函数
逻辑运算与赋值
绝大部分的数值运算和逻辑运算符可以用于字符串的操作
Example:

  1. Str='aardvark';(‘=’表示赋值)
  2. str(str=='a')='z'(‘==’表示逻辑判断是否相等)

运算结果: ‘zzrdvzrk’

  • Structure(结构体)

目的是为了存储不同类型的数据
Example:
3.png

结构体添加信息
4.png

  1. Student(2).name='ann lane';
  2. Student(2).id='aln4@sfu.ca';
  3. Student(2).number=301078853;
  4. Student(2).grade=[95 100 90;95 82 97; 100 85 100];

结构体函数(structure function)
(1)Cell2structure 将cell数组转换成结构体数组
(2)fieldnames 求结构体的域名
(3)getfield 提取结构体的域
(4)struct2cell 将结构体数组转换成cell数组
5.png
结构体嵌套
6.png
Example:

  1. A=struct('data',[3 4 7;8 0 1],'nest',struct('testnum','tstt1','xdata',[4 2 8],'ydata',[7 1 6]));
  2. A(2).data=[9 3 2;7 6 5];
  3. A(2).nest.testnum='test2';
  4. A(2).nest.xdatda=[3 4 2];
  5. A(2).nest.ydatda=[5 0 9];
  6. A.nest
  • Cell(元胞数组)

PS:
(1)存储不同类型数据的另一种的方法
(2)类似矩阵,只是每个部分包含不同类型的数据
(3)利用{}进行宣称
Example:
第一种表达方式:

  1. A(1,1)={[1 4 3;0 5 8;7 2 9]};
  2. A(1,2)={'anne smith'};
  3. A(2,1)={3+7i};
  4. A(2,2)={-pi:pi:pi};

A
第二种表达方式:

  1. A{1,1}=[1 4 3;0 5 8;7 2 9];
  2. A{1,2}='anne smith';
  3. A{2,1}=3+7i;
  4. A{2,2}=-pi:pi:pi;

A
7.png
Exercise

  1. A(1,1)={'this is the first cell'};
  2. A(1,2)={[1 2 3; 4 5 6;7 8 9]};
  3. A(2,1)={[5+j*6 4+j*5]};
  4. A(2,2)={{'Tim','Chris'}};

A
8.png
提取元胞数组的元素(accessing cell array)
利用{}来提取元胞数组的元素
9.png
Exercise:

  1. A{1,1}=[1 3 4;0 5 8;7 2 9];
  2. A{1,2}='anne smith';
  3. A{2,1}=3+7i;
  4. A{2,2}=-pi:pi;pi;
  5. A{1,1}(1,1)

10.png
元胞数组函数(cell array fuction)
11.png
Num2 cell和mat2cell
将一个矩阵转变成元胞变量
Example:

  1. A=magic(3);
  2. B=num2cell(A)(得到一个3*3的元胞数组)
  3. C=mat2cell(a,[1 1 1], 3)(得到一个3*1cell数组)

12.png

多维阵列(multidimensional Array)
13.png
数组拼接(array concatenation)
Example:

  1. A=[1 2;3 4]; B=[5 6;7 8];
  2. C=cat(1,A,B)(沿行方向拼接)
  3. D=cat(2,A,B)(沿列方向拼接)
  4. E=cat(3,A,B);(沿层方向拼接)

14.png
Reshape()(矩阵重塑)
重新设置矩阵的行数和列数
Example:

  1. A=[1 2;3 4;5 6];
  2. B=reshape(A,2,3);

检查变量的形式
15.png

  • 数据获取(data access)

16.png
支持的格式
17.png

存储与加载
Save workspace to a file
Example:

  1. Clear; a=magic(4);
  2. Save mydata.mat
  3. Save mydata.mat -ascii

Load data stored in file
Example:

  1. Load('mydata.mat')
  2. Load('mydata.mat','-ascii')

表格读取(xlsread())
Example:

  1. Score=xlsread('04score.xlsx')(读取所有数据)
  2. Score=xlsread('04score.xlsx','S2:D4')(读取特定位置的数据)

18.png
表格写操作(xlswrite())
Example:

  1. M=mean(score);
  2. Xlswrite('04score.xlsx',M, 1,'E2:E4' );
  3. Xlswrite('',{'mean'},1,'E1');

读取表格中的文本
Example:
[score Header]=xlsread(‘04score.xlsx’);
19.png

20.png

文件的读取与写入操作
PS:每一个文件都有一个ID;读取文件的位置可以通过指针来标记
21.png
文件I/O函数

  • Fopen 打开文件
  • Fclose 关闭文件
  • Fscanf 读取文件中的数据
  • Fprintf 将数据写入文件
  • Feof 检查文件结尾

example:
22.png
Example:

  1. X=0:pi/10:pi; fid=fopen('sinx.txt','w');
  2. For i=1:11
  3. fprintf(fid,'%5.3f %8.4f\n', x(i),y(i));
  4. End
  5. Fclose(fid); type sinx.txt

23.png
读写的格式:
24.png
说明:
1.%d就是输出整型;%3d就是说按照长度为3的整型输出,比如10,输出就是“10”,“”代表空格。
2.%f就是输出小数;%6.2f就是小数点后保留2位(精度),输出总长度为6(长度),比如3.14159,输出后就是“ _3.14”(前面三个空格)
3.%c就是输出单个字符;
4.%s就是输出字符串;
文件结尾:feof(fid)
Example:
25.png

3.绘图

3.1初阶绘图

3.2进阶绘图

4.函数运算

5.GUI

6.影像处理

6.1初阶影像处理

6.2进阶影像处理

7.数值微分与积分

8.线性方程与线性系统

9.回归与内插

10.专题与技巧

11.实操想法

12.实操项目