变量与常量
常见运算符和特殊字符
+ | 加; 加法运算符。 |
---|---|
- | 减; 减法运算符。 |
* | 标量和矩阵乘法运算符。 |
.* | 数组乘法运算符。两数组同维,对应元素相乘 |
^ | 标量和矩阵求幂运算符。 |
.^ | 数组求幂运算符。 |
\ | 左除法运算符。 A左除B = A的逆乘以B = B右除A |
/ | 右除法运算符。 A右除B = A乘以B的逆 |
.\ | 数组左除法运算符。 |
./ | 数组右除法运算符。 |
: | 冒号;生成规则间距的元素并表示整行或整列。 |
( ) | 圆括号;封闭函数参数和数组索引;重写优先级。 |
[ ] | 括号;附件数组元素。 |
. | 小数点。 |
… | 省略号;行连续运算符。matlab不能忽略换行 |
, | 逗号;分隔一行中的语句和元素 |
; | 分号; 分隔列并抑制显示。 |
% | 百分号;指定注释并指定格式。 |
_ | 引用符号和转置运算符。 |
._ | Nonconjugated 转置运算符。 |
= | 赋值运算符。 |
常见数据类型
数值型数据
double近似解,如1/3为0.33333
1 | a=0.3;//不加分号会在命令行窗口显示运算结果 |
符号型数据
数据会完好无损的存在声明的变量中
数值变量必须提前赋值,否则会提示出错,只有符号变量可以在没有提前赋值的情况下合法地出现在表达式中,但是符号变量必须预先定义。
符号变量的创建:
- $S = sym(‘A’)$定义单个符号变量S
- $syms a b c$ 定义多个符号变量 a,b,c
1 | syms x y z w |
可以使用$sym(‘数值表达式’)$ 将数值表达式转成符号表达式
字符串数据
字符串类型,注意不是字符类型,与C语言不同,是用单引号控制的。
常见常量
小量eps
默认值为 2.2204 e-16,当某个值得绝对值小于eps时,会被matlab判定为0
虚数单位i/j
表示一个虚数单位一般用1j而不是j
无穷Inf
无穷大量,适用于有限数除零等运算
不定式NaN
Not a Number,用于0/0,Inf/Inf运算
圆周率
pi:圆周率得双精度浮点表示
警告错误信息
lasterr和lastwarn:存放最新一次得错误或者警告信息,为字符串类型
基本操作
冒号运算符
A(:,j) | 是A的第j列。 |
---|---|
A(i,:) | 是A的第i行。 |
A(:,:) | 是等效的二维数组。对于矩阵,这与A相同。 |
A(j:k) | is A(j), A(j+1),…,A(k). |
A(:,j:k) | 是A(:,j),A(:,j + 1),…,A(:,k)。 |
A(:,:,k) | 是第k个三维阵列A的页 |
A(i,j,k,:) | 是三维数组A中的向量。向量包括A(i,j,k,1),A(i,j,k,2),A(i,j,k,3)等。 |
A(:) | 是A的所有元素,被视为一个单独的列。在赋值语句的左侧,A(:)填充了A,并保留了之前的形状。在这种情况下,右侧必须包含与A相同数量的元素。 |
1 | A = [1 2 3 4; 4 5 6 7; 7 8 9 10] |
向量的运算
点积
1 | v1 = [2 3 4]; |
生成矩阵
语法:用[]声明矩阵,矩阵横行用;来分割,横行得每个元素用逗号或者空格分割
1 | a=[1,2,3;4,5,6;7,8,9]; |
用冒号表达式生成一个行向量
1 | v1=0:0.2:pi; %步距0.2,从0-pi |
矩阵的行列式
1 | a = [ 1 2 3; 2 3 4; 1 2 5] |
逆矩阵
如果矩阵的行列式为零,则逆不存在,矩阵是奇异的。
1 | a = [ 1 2 3; 2 3 4; 1 2 5] |
子矩阵提取
利用正整数类型:
matlab中矩阵的行列是从1开始的
1 | B = A(v1, v2); %v1:行,v2:列 |
利用逻辑类型:
1 | a=[1,2,3]; |
查询帮助
1 | help something; |
英文词汇:
1 | scalar 标量 symbolic variable 符号性变量 norm 范数 permutation 排列 interval 区间 piecewise 分段 numerator 分子 denominator 分母 sparse 稀疏的 syntax 句法 gradient 斜率 |
数学运算
关系运算符
1 | <小于 |
---|---|
2 | <=小于或等于 |
3 | >大于 |
4 | >=大于或等于 |
5 | ==等于 |
6 | ~=不等于 |
矩阵的代数运算
1 | B=A.' % B是A的转置,行变为列,列变为行 |
矩阵的逻辑运算
1 | c=a&b |
此处的C为一布尔值矩阵
矩阵的布尔运算
1 | c=a>b |
其他函数,可以使用help查看文档
1 | find/all/any |
离散数学运算
1 | n=floor(x) % 向下取整 |
高级操作
流程结构
循环结构
末尾加不加分号都可以
1 | for(i=v) |
条件转移结构
1 | if(条件1) |
开关结构
1 | switch(开关表达式) |
试探结构
1 | try |
函数
基本函数格式
需要定义在单独的文件中
1 | %函数的格式 |
匿名函数
可以直接定义在脚本中
1 | power = @(x, n) x.^n; |
主函数和子函数
子函数仅对主函数和定义它们的函数文件中的其他子函数可见。
1 | function [x1,x2] = quadratic(a,b,c) |
嵌套函数
1 | function x = A(p1, p2) |
MATLAB数据导入
importdata
1 | A = importdata(filename)从filename表示的文件中将数据加载到数组A中。 |
---|---|
2 | A = importdata(‘-pastespecial’)从系统剪贴板而不是文件加载数据。 |
3 | A = importdata(_, delimiterIn)将 delimiterIn 解释为 ASCII 文件、文件名或剪贴板数据中的列分隔符。可以对上述语法中的任何输入参数使用 delimiterIn。 |
4 | A = importdata(_, delimiterIn, headerlinesIn)从ASCII文件,文件名或剪贴板中加载数据,并从行headerlinesIn + 1开始读取数字数据。 |
5 | [A, delimiterOut, headerlinesOut] = importdata(_)使用前面语法中的任何输入参数,返回delimiterOut中输入ASCII文件的检测到的分隔符字符和headerlinesOut中检测到的头行数。 |
底层文件IO
函数名 | 函数功能 |
---|---|
fclose | 关闭一个或所有打开的文件 |
feof | 文件结尾测试 |
ferror | 有关文件I/O错误的信息 |
fgetl | 从文件中读取行,删除换行符 |
fgets | 从文件中读取行,保留换行符 |
fopen | 打开文件,或获取有关打开文件的信息 |
fprintf | 将数据写入文本文件 |
fread | 从二进制文件读取数据 |
frewind | 将文件位置指示器移动到打开文件的开头 |
fscanf | 从文本文件读取数据 |
fseek | 移动到文件中的指定位置 |
ftell | 在打开文件中的位置 |
fwrite | 将数据写入二进制文件 |
绘图
二维曲线绘制
1 | plot(x,y,选项); % 注意这里x是向量,y既可以是向量,又可以是矩阵 |
1 | x = [0:0.01:10]; |
绘制条形图
1 | x = [1:10]; |
绘制等高线
1 | [x,y] = meshgrid(-5:0.1:5,-3:0.1:3); %independent variables |
三维曲线绘制
1 | t=0:0.1:2*pi; |
三维曲面绘制
1 | [x y]=meshgrid(-1:0.04:1,-2:0.04:2); % 生成网格数据 |
1 | [x,y] = meshgrid(-2:.2:2); |
This is copyright.