一些常用的指令和实用的操作:
- clear all :移除之前的变量
- close all:关闭所有图形
- 在语句的最后加上“;”:避免该语句的输出
- 使用“…”: 使脚本更加好阅读
例如:
- 按住“Ctrl + C”:中断正在运行的脚本的运行
1.基本操作和矩阵输入
1.1基本操作
- ans: matlab中的临时变量,当没有定义变量只进行运算时,会将结果存到ans中(不需要指明存到ans中)。
- 变量: 不需要定义类型,为变量赋值时,只能使用“变量名 = 值”来进行赋值,定义变量名时,变量名中可以包含数字,但是数字不能放在第一位。
- 特别的变量名和常量:
- ans
- i,j
- Inf:无穷
- eps
- NaN:不是一个数字
- pi:π
注:这些变量虽然你仍然能够直接赋值,但是在你赋值之后,他们将失去原来的作用,会只是一个被赋了值的变量。
例如:
cos = 'This string.';
cos(8)
输出结果为:r
如果想重新使用cos函数,则要先清除:
clear cos//清除操作
cos(8)
注:清除时需要注意,尽量不直接执行‘clear’(后面不跟变量名),会直接清除所有赋值。
- 数据类型展示转换:
- short:短整型
- long:长整型
- shortE:短整型+科学符号
- longE:长整型+科学符号
- bank:保留两位有效数字
- hex:十六进制
- rat:有理数
format long
使用该形式进行类型展示转换。
- 几个方法:
- clc:清除命令界面展示
- clear:移除工作空间中的变量
- who:显示工作空间中的变量
- whos:显示工作空间中变量的信息
1.2矩阵输入
- 行向量:a = [1 2 3 4] (中间的空格不能省)
- 列向量:b = [1;2;3;4]
对于一个矩阵而言:
可以输入为:A = [1 21 6;5 17 9;31 2 7]
示例:- A(8):得到矩阵中第八个数(从上到下,从左到右),结果为9
- A([1 3 5]): 得到矩阵的第1,第3,第5三个数组成的矩阵
- A([1 3; 1 3]):得到矩阵的第1,第3个作为矩阵第一行,矩阵的第1,第3个作为矩阵第二行
- A(3,2):得到第三行第二列的数
- A([1 3],[1 3]):得到第一行第三行和第一列第三列的交集的数组成的矩阵
- 等差级数的创立:
- A = 1:100 :建立一个矩阵,从1开始,步长为1,上限为100的矩阵
- A = 1:2:5 :建立一个矩阵,从1开始,步长为2,上限为5的矩阵
- 将位置上的数据置空: A (3,:) = [] :将第三行上的数置空。
- 矩阵跟向量的四维运算:
例子:
- x1 = A+a:矩阵上的数都加上2
- x2 = A/a: 矩阵上的数都除以2
- x3 = A./a:矩阵上的数都除以2
- x4 = A^a:A*A,即A的幂级数(a为多少次幂)
- x5 = A.^a:矩阵上的每一个数取a次方
- C = A’:A的转置矩阵
- y1 = A+B:矩阵相加
- y2 = A*B:矩阵相乘
- y3 = A.*B:矩阵各对应位置上的数相乘
- y4 = A/B:A乘以B的逆矩阵
- y5 = A./B:矩阵各对应位置上的数相除
- 特别的矩阵:
- eye(n):n*n维的单位矩阵
- zeros(n1,n2):n1*n2的数值全为0的矩阵
- ones(n1,n2):n1*n2的数值全为1的矩阵
- diag():对角矩阵
- 一些矩阵相关的方法:
- max(A):矩阵中每一列中最大的值
- max(max(A)):矩阵中最大的值
- min(A):矩阵中每一列中最小的值
- sum(A):矩阵中每一列的和
- mean(A):矩阵中所有数字的平均
- sort(A):将每一列按从小到大排序
- sortrows(A):将每个行按照第一列中的顺序进行排序
- size(A):矩阵的行数和列数
- length(A):矩阵的长度
- find(A):寻找矩阵中等于A的位置
2.结构化程式和自定义函数
在matlab中%用来注释,%%表示将代码划成一个区块。
- 逻辑操作:
2.1 if elseif else
模板:
if condition1
statement1
elseif condition2
statement2
end
注:“elseif”和“else”是可选择的。
示例:
a = 3;
if rem(a,2) == 0 %余数
disp('a is even')
else
disp('a is odd')
end
2.2 switch
模板:
switch expression
case value1
statement1
case value2
statement2
.
.
otherwise
statement
end
示例:
input_num = 1;
switch input_num
case -1
disp('negative 1');
case 0
disp('zero');
case 1
disp('positive 1');
otherwise
disp('other value');
end
2.3 while
模板:
while expression
statement
end
示例:
n = 1;
while prod(1:n) < 1e100 %1:n表示一个1到100 的向量,prod表示向量中的每个数相乘,1e100表示科学计数法,表示1乘上10的100次方。
n = n+1;
end
2.4 for
模板:
for variable = start:increment:end %start表示起始,end表示结束,increment表示步长
commands
end
示例:
%%
for n=1:10
a(n) = 2^n
end
disp(a)
%%
for n=1:2:10
a(n) = 2^n
end
注:如果你想接着使用a这个变量并给它赋值的话,必须要先清理下a这个变量,否则这个变量不会改变。
2.5 break
功能:中断for或while循环的进程
示例:
x = 2;k = 0;error = inf;
error_threshold = 1e-32;
while error > error_threshold
if k>100
break
end
x = x-sin(x)/cos(x);
error = abs(x - pi);
k = k+1;
end
该代码中的break条件达到后会跳出while循环。
2.6 函数
多个输入单个输出示例:
function x = freebody(x0,v0,t)
x = x0 + v0.*t + 1/2*9.8*t.*t %这里的点乘不能换为乘,如果想进行几个一起操作会报错
多个输入多个输出示例:
function [a,F] = acc(v2,v1,t2,t1,m)
a = (v2-v1)./(t2 - t1);
F = m.*a;
函数默认变量:
- inputname:函数输入的变量名
- mfilename:正在运行中的函数的文件名
- nargin:函数输入参数的数量
- nargout:函数输出参数的数量
- varargin:可变长度输入参数列表
- varargout:可变长度输出参数列表
示例:
function [volume] = pillar(Do,Di,height)
if nargin ==2,
height = 1;
end
volume = abs(Do.^2 - Di.^2).*height*pi/4