Matlab精华笔记
文章目录
0写在前面的话
Matlab只是一个工具,并不像理论知识那样需要完全掌握、深入研究,而且Matlab有完善的帮助文档,所以我认为学习Matlab只需要了解有哪些基本语法,有哪些功能至于如何实现我觉得完全可以交给百度和帮助文档。基于此观点,本文主要把Matlab的基本语法与C语言做对比、并且描述一些常用的函数。其他特殊的使用方法,可以在具体的项目中通过百度学习。这是自己最近学习的心得与大家分享一下,希望对大家有用。
1 Matlab基本语法-与C语言做对比
1.1 变量
1.1.1 变量命名规则
- 变量命名与C语言一样,区分大小写且不能以数字开头(关键字查看命令 iskeyword )
- 不用像C语言一样必须先定义再赋值,但是如果定义一个矩阵,并且在运行过程中大小经常发生变化,建议先定义(特别是在循环语句中)
1.1.2 变量类型
变量类型与C语言类似,但是添加了cell类型的变量
-
元胞数组的使用
-
创建图中所示cell
-
方法1: 直接创建
A = { [1 4 3; 0 5 8; 7 2 9] 'Anne Smith' ;... 3+7i -pi:pi:pi}
-
方法2: 利用单元索引创建(得到是子元胞数组)
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};
-
方法3: 利用内容索引创建(得到的是cellA对应区域的内容)
-
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{} 元胞数组的子元胞数组索引
-
-
创建高维元胞数组
-
利用cat进行cell拼接
1.1.2 变量显示
- 变量显示命令
命令 | 作用 | 对应C语言的内容 |
---|---|---|
format [显示格式] | 更改变量显示格式 | 类似于printf里面的格式显示“%d”, 但是这里是Matlab全部变量显示的格式 |
; | 添加;之后不显示运算结果 | C必须在每个语句后面加; |
clear ([变量名]) | 清除工作区内所有变量 (加了变量名,只清楚单个变量) | |
who/whos | 显示工作区所有变量(简易格式)/(复杂格式) | |
clc | 清除终端输出 |
1.2 数学运算符
-
Matlab运算符与C语言的不同
运算符 符号表示Matlab 符号表示C 区别 乘法 “.* “ 数组乘法(矩阵运算:按元素)
“*” 矩阵乘法(线性代数)“*” 如果是数值运算,这三个无任何区别,
如果矩阵运算三个都不同除法 “./” 数组右除 “‘.\’”数组左除
"A/B" 求解线性方程组xA=B
"B/A" 求解线性方程组Ax=B“/” 与乘法类似 幂 ’“.^” “^” “^” 与乘法类似 取模运算(取余) mod(a,b) a%b Matlab 可以用于浮点数
求余之后的正负符号不同
Matlab与除数同号、C语言与被除数同号[1]自加、自减 无专用运算符 可用a = a+1 a++ 或 ++a 强制类型转换 double(a) (double)a 使用方式不同
其他类型转换见Help文件不等于 ~= != 逻辑与和或 &/|
=
或&&/||
运算结果相同但是&&效率更高[2]&&、|| 按位运算 bitand(a,b)
bitor(a,b)a&b
a|b注意:C语言的算数运算与显示的结果与运算的数据类型有关,而Matlab无关
1.3文件读写
命令 | 作用 |
---|---|
save(filename,variables,'-ascii') | 将变量variables以文本形式存入文件中 |
A= load(filename,'-ascii') | 从文本形式文件中读取数据 |
[num,txt,raw] = xlsread(filename,sheet,xlRange) | 读取Excel文件 |
xlswrite(filename,A,sheet,xlRange) | 写入Excel文件 |
注意:复杂的数据格式,如struct和cell,不支持以二进制格式存储.
1.4 结构化编程
Matlab流程控制语句 | C语言 |
---|---|
if ,elseif,else | if ,else if,else |
switch switch_expression case case_expression statements case case_expression statements … otherwise statements end | switch(expression) { case constant-expression : statements; break; /* 可选的 / case constant-expression : statements; break; / 可选的 / / 您可以有任意数量的 case 语句 / default: / 可选的 */ statements; } ==特别注意如果没有使用break , 则该条件后的所有statements都会执行 |
for index = values statements end | for ( init; condition; increment ) { statement(s); } |
break,continue、rerun | 用法相同 |
执行并捕获产生的错误: try 执行内容 catch MException 发生中断执行内容 end | 无 |
paus 暂停程序 | 无 |
注意:
Matlab不像C语言,条件判断表达式需要加()
Matlab需要使用
...
来拼接多行
1.5 函数
1.5.1 函数定义与C语言的不同
-
Matlab:
function [输出变量名] = 函数名(输入变量名)
函数代码 -
C语言
[返回值类型变量] 函数名([输入变量名])
{函数体
return 输出变量名
}
-
Matlab内置函数参数
函数参数 | 意义 |
---|---|
imputname | 输入变量名列表 |
mfilename | 函数源代码文件名 |
nargin | 输入变量数 |
nargout | 输出变量个数 |
varargin | 可变长输入参数列表 |
varargout | 可变长输出参数列表 |
1.5.2 用函数句柄的形式来定义函数
函数句柄 = @(输入变量) 输出变量
例子:画出f(x)=e-2x的图像
f = @(x) exp(-2*x);
x = 0:0.1:2;
plot(x, f(x));
注意:
Matlab中函数保存在.m文件中是,函数名必须与文件名相同
计算乘法时应尽量使用.*而非*,因为前者对于输入参数为矩阵的情况也可使用。
参考文献
[1]https://blog.csdn.net/qq_40537092/article/details/89609427
[2]https://jingyan.baidu.com/article/a24b33cdccd60319ff002b5d.html
内容来源:
MATLAB教程_台大郭彦甫(14课)原视频补档和评论区的笔记