该笔记的整理基于台湾大学郭彦甫的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.mat
Save 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:11
fprintf(fid,'%5.3f %8.4f\n', x(i),y(i));
End
Fclose(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: