本篇只是关于matlab的日常总结,比较杂乱,内容丰富后再进行分篇整理
函数求导
- 一阶导数diff(f)
- 二阶导数diff(f,2)
函数求积分
- 不定积分int(f,x)
- 定积分int(f,x,1,10)
将变量或式子显示为我们常用的书面形式
- pretty(ans)
矩阵求逆
- inv(A)
- 当用A的逆左乘其他矩阵时,M=inv(A)*B不如M=A\B运算更快
函数化简
- f=collect(f);%化简
- f=vpa(f,6);%精度为6
检查函数输入个数
- nargin%表示该函数输入参数的个数
subs替换函数
- 用0代替自变量x,返回该形式下的函数值
ezplot绘图函数
- 绘制函数f的图像ezplot(f)
- 绘制函数f在区间[1,10]的图像ezplot(f[1,10])
无穷大
- inf%正无穷大
- -inf%负无穷大
end索引
- 使用end索引到向量的最后一个元素
解方程组
防止分母为零
- 分母加eps
- limit()
解决solve求解方程组时出现root与变量z的问题
syms b m y
eqn = (-b-2)* y^3+ 3* b *m*y^2-3*b*m^2*y+b*m^3== 0;
y = solve(eqn, y)
- 使用roots()函数
syms b m y
eqn = (-b-2)* y^3+ 3* b *m*y^2-3*b*m^2*y+b*m^3== 0;
y = solve(eqn, y);
roots(y)
向量转置
length()
- 查看向量中元素个数
仅限于一维数组用该函数,二维数组用size;原因:length(2*3数组)返回3,而我们想要的是2。
判断两个数值是否相等时最好不要用==
- 因为精度原因,直接用==判断,并不能如意
- 用两个数值差<=1e-5比较好,精度自己掌握
学会使用digits和vpa
-
此处,如果不用digits和vpa去控制,则可能在if语句判断时,t_current明明等于t(m+1),却满足不了该条件
fprintf()
- fprintf('t2_i:%d, t3_i:%d, t4_i:%d, t5_i:%d', t2_i, t3_i, t4_i, t5_i);
- 可以打印变量值
disp()
- disp('hello world');
- 不能打印变量值
保存变量
- save('data','t2_i', 't3_i', 't4_i', 't5_i')
- 将变量保存在data.mat文件
solve
- sol = solve(conds, [v_sym a_sym], 'ReturnConditions', true);%conds为不等式方程组向量;[v_sym a_sym]是变量
- sol = solve(conds, [v_sym a_sym]);%conds为等式方程组向量,[v_sym a_sym]是变量
strsplit切分字符串
- conditions_str = char(sol.conditions);%先转成char
conditions_ = strsplit(conditions_str,'&');%用strsplit对其切分,切分符号为‘&’
isempty()
- 判断元素是否为空
isreal()
- 判断元素是否为实数
str2num()
- 字符转数字
axis equal
- 保持各轴的比例一样
读文件
- 读txt文件,一般用importdata('filename.txt')
- 读csv文件,一般用readmatrix('filename.csv')