该笔记的整理基于台湾大学郭彦甫的matlab教程视频:
点击查看【bilibili】
1.基本操作与矩阵输入
有关基本的数学运算和矩阵运算,可以参见CSDN的一篇分享:
一.界面
MATLAB桌面组成.xmind
二.数值计算
一些基本的数值运算。
三.变量(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)数值显示的格式
(6)”;”和“:”的含义
“;”表示一段语句的结束,计算结果不会被保存在workspace里
“:”用来创造向量(eg: j:k——[j, j+1, j+2, ….j+m], j:i:k——[j, j+i,……j+m*i])
四.矩阵输入
五.编写脚本
- function搜索
界面上“_f_x”按钮可以搜索函数
- 注解
%——-comment
%%——section(可以执行某个section,在debug中很有用)
用%%将不同的section隔开,选中某section,可以选择run section来运行某个部分的程序
- debug
设置断点(break point)
Continue—-继续程序
- 缩排
Smart indent,智能缩排,选择相应的语句,然后右击鼠标,选择smart indent可以实现自动缩排
六.结构化程序设计(structured programming)
结构化编程的详细内容,见下述链接:
Flow control | If, elseif, else———-end
说明:condition成立,则执行statement |
|
| —- | —- |
| Switch, case, otherwise——————end
说明:依据expression的值与哪一个value相等,则执行哪一个statement |
|
| Try, catch———end |
| | While———-end
说明:expression为真,则执行statement |
|Logical operators

- Pre-allocating space to variables
事先给变量分配空间,可以提高程序运行效率。
- 变量类型转换

- Character(字符)
一个字符代表的ASCII码0~255中的数,
字符与ASCII码对应表格
- String
字符串拼接(string concatenation),三种方法:
1)利用方括号
2)利用strcat拼接函数
strcat(s1,s2)
3)利用sprintf函数
逻辑运算与赋值
绝大部分的数值运算和逻辑运算符可以用于字符串的操作
Example:
Str='aardvark';(‘=’表示赋值)str(str=='a')='z'(‘==’表示逻辑判断是否相等)
运算结果: ‘zzrdvzrk’
- Structure(结构体)
目的是为了存储不同类型的数据
Example:
结构体添加信息
Student(2).name='ann lane';Student(2).id='aln4@sfu.ca';Student(2).number=301078853;Student(2).grade=[95 100 90;95 82 97; 100 85 100];
结构体函数(structure function)
(1)Cell2structure 将cell数组转换成结构体数组
(2)fieldnames 求结构体的域名
(3)getfield 提取结构体的域
(4)struct2cell 将结构体数组转换成cell数组
结构体嵌套
Example:
A=struct('data',[3 4 7;8 0 1],'nest',struct('testnum','tstt1','xdata',[4 2 8],'ydata',[7 1 6]));A(2).data=[9 3 2;7 6 5];A(2).nest.testnum='test2';A(2).nest.xdatda=[3 4 2];A(2).nest.ydatda=[5 0 9];A.nest
- Cell(元胞数组)
PS:
(1)存储不同类型数据的另一种的方法
(2)类似矩阵,只是每个部分包含不同类型的数据
(3)利用{}进行宣称
Example:
第一种表达方式:
A(1,1)={[1 4 3;0 5 8;7 2 9]};A(1,2)={'anne smith'};A(2,1)={3+7i};A(2,2)={-pi:pi:pi};
A
第二种表达方式:
A{1,1}=[1 4 3;0 5 8;7 2 9];A{1,2}='anne smith';A{2,1}=3+7i;A{2,2}=-pi:pi:pi;
A
Exercise
A(1,1)={'this is the first cell'};A(1,2)={[1 2 3; 4 5 6;7 8 9]};A(2,1)={[5+j*6 4+j*5]};A(2,2)={{'Tim','Chris'}};
A
提取元胞数组的元素(accessing cell array)
利用{}来提取元胞数组的元素
Exercise:
A{1,1}=[1 3 4;0 5 8;7 2 9];A{1,2}='anne smith';A{2,1}=3+7i;A{2,2}=-pi:pi;pi;A{1,1}(1,1)

元胞数组函数(cell array fuction)
Num2 cell和mat2cell
将一个矩阵转变成元胞变量
Example:
A=magic(3);B=num2cell(A)(得到一个3*3的元胞数组)C=mat2cell(a,[1 1 1], 3)(得到一个3*1的cell数组)

多维阵列(multidimensional Array)
数组拼接(array concatenation)
Example:
A=[1 2;3 4]; B=[5 6;7 8];C=cat(1,A,B)(沿行方向拼接)D=cat(2,A,B)(沿列方向拼接)E=cat(3,A,B);(沿层方向拼接)

Reshape()(矩阵重塑)
重新设置矩阵的行数和列数
Example:
A=[1 2;3 4;5 6];B=reshape(A,2,3);
检查变量的形式
- 数据获取(data access)

支持的格式
存储与加载
Save workspace to a file
Example:
Clear; a=magic(4);Save mydata.matSave mydata.mat -ascii
Load data stored in file
Example:
Load('mydata.mat')Load('mydata.mat','-ascii')
表格读取(xlsread())
Example:
Score=xlsread('04score.xlsx')(读取所有数据)Score=xlsread('04score.xlsx','S2:D4')(读取特定位置的数据)

表格写操作(xlswrite())
Example:
M=mean(score);Xlswrite('04score.xlsx',M, 1,'E2:E4' );Xlswrite('',{'mean'},1,'E1');
读取表格中的文本
Example:
[score Header]=xlsread(‘04score.xlsx’);

文件的读取与写入操作
PS:每一个文件都有一个ID;读取文件的位置可以通过指针来标记
文件I/O函数
- Fopen 打开文件
- Fclose 关闭文件
- Fscanf 读取文件中的数据
- Fprintf 将数据写入文件
- Feof 检查文件结尾
example:
Example:
X=0:pi/10:pi; fid=fopen('sinx.txt','w');For i=1:11fprintf(fid,'%5.3f %8.4f\n', x(i),y(i));EndFclose(fid); type sinx.txt

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