matlab基本操作
1. 一些操作Tips:
- clear:清空Workspace clc:清空Command Window
- 批量修改变量名:shift+enter(只针对变量第一次出现时)
- 控制输出格式:format
format short:小数点后4位,之后输出的数都按此格式
- digits(4) vpa(x) 一起用控制x输出为4位有效数字。或者直接vpa(x,4)
- 批量注释:ctrl+R 取消注释:ctrl+T
- 单步调试:F10
- 查看变量:who(只列举) whos(附带变量空间大小、字节数等信息)
2. 文件操作:
- save filename x1 x2 x3 (-append)
存储变量值至filename.mat文件,默认存储至matlab.mat文件。-append追加存储,默认为覆盖存储
- load filename x1 x2 x3:加载变量,默认为加载所有变量。会覆盖Workspace同名变量
3. 函数.m文件定义
function [y1,y2] = fun(x1,x2) y1,y2…是输出变量,直接在函数内参与运算,函数内不要写clear,会清掉输入变量
4. 字符串操作:
eval(‘xxx’):执行字符串所对应的matlab语句
str2num(‘xxx’):将数字字符串转化为数字
num2str(xxx):将数字转化为数字字符串
取字符串特定字符:str(2)
字符串拼接:str=[str1,str2]
abs(‘x’)函数:求字符x的ASCII码
char(x):求ASCII码为x的字符
matlab矩阵操作
1. 矩阵的建立: a=[1 2 3;4 5 6;7 8 9]
矩阵取元素:
- 下标:a(2,3),行、列皆从1开始
- 序号:a(8),按列计数
2. 冒号表达式建立行向量 x=5:2:20
3. 矩阵拼接:直接中括号拼接[ ]
4. 矩阵拆分: b=a(2:4,5:6),b为矩阵a2~4行5~6列的内容。
用end来表示最后一行/列,用冒号:表示所有行/列
b=a(:),按矩阵a元素的【排列顺序】取元素,最终排成列向量
5. 矩阵查找特定元素:
num/[rows,cols,vals]=find(A>10),找矩阵A中所有>10的数。一个返回值为序号,两个返回值即为下标,三个返回值加上值。
6. 矩阵转置:B=A’
7. 删除矩阵元素,对矩阵整行/整列元素置空,后面元素序号前补 a(2,:)=[]
8. 复制矩阵 repat(<矩阵名>,x,y),以此矩阵为“一块”复制x行,y列
9. 矩阵计算:直接+-/
/为右除 \为左除 /即为乘矩阵的逆
.和./为点乘点除,矩阵对应元素的乘除。
注意:矩阵的幂^和矩阵元素的幂.^不一样
10. A(:)表示以一列的方式显示矩阵A中所有元素
11. size(A,1)矩阵的行数,size(A,2)矩阵的列数
12. 特殊矩阵的建立
zeros:零矩阵 zeros(x,y):x行y列零矩阵
ones:1矩阵
eye:单位矩阵
rand:随机矩阵,元素为0~1随机数的矩阵
rand(a,b)表示产生a行b列随机数
产生a到b之间的x行y列随机矩阵:a+(b-a) * rand(x,y)
randn:均值为0,方差为1的标准正态分布的随机矩阵
inv():求方程组的逆矩阵
diff():计算差分(后项减前项)
diag():构建对角矩阵(输入向量)or从矩阵中取对角线(输入矩阵)
matlab绘图
1. 绘制函数图形标识符:legend(‘’,’’,’’)
多个图例要依据添加对应数据的顺序依次加入
2. plot(x,y)
最基本的绘图函数
画多条函数plot(x,y1,x,y2,x,y3….)
3. 设置线型和线的粗细:plot(x,y,’-.’,’linewidth’,1.5);可通过线型、点型和颜色改变线条外观,粗细设置尤为重要。
更改坐标范围:axis([Xmin, Xmax, Ymin, Ymax])、xlim([Xmin, Xmax])、ylim([Ymin, Ymax])
坐标轴名字(并设置字体):xlabel(‘titke’,’fontsize’,12)
4. loglog(),semilogx(),semilogy()函数分别以
两坐标轴为log10刻度,x轴为log10刻度,y轴为log10刻度作函数图
5. plotyy(x,y1,x,y2)双y轴作图
6. errorbar(y,E)函数,E为1/2误差长度的向量
在函数上标明误差(对应离散点作图,且x/y和E向量长度相等)
7. fplot(‘<M文件名>’,[范围])
调用M文件函数绘图,有范围限制
8. ezplot(‘函数表达式’,[x范围],[y范围])
隐函数绘图。easy plot,直接写函数表达式即可绘图
9. polar(x,y)、ezpolar(‘函数表达式’)
极坐标绘图,(ρ,Θ)
10. hist(data,<区间数>)
绘制频数分布直方图,频数总分数默认10份
11. 对图形的修改可直接在figur面板上进行
解线性方程组
基本概念
tol:误差
rank(A):返回矩阵A的秩
size(A,1):返回矩阵A的行数
size(A,2):返回矩阵A的列数
null(A):求齐次方程组的解
det(A):求【方阵】的行列式
diag(diag(A)):构造矩阵A的对角线矩阵
norm(A):求向量A的范数(向量中各元素的平方和再开根号)
可用来求两向量的的“差值”norm(A-B)左除法:matlab一般用inv()<方阵求逆>、pinv()<非方阵求伪逆>来代替左除。
左除法分三种情况:
恰定方程组:rank(A) = rank([A,b]) = n,方程组有唯一解
欠定方程组:rank(A) = rank([A,b]) < n,方程组有无穷解,通解用”特解+对应齐次方程组解”来表示。
超定方程组:rank(A) != rank([A,b]),方程组无解,求出的是最小二乘解。
- [r]=eig(A):求矩阵A的特征值r<列向量形式>
[x,r]=eig[A]:求矩阵A的特征向量x和特征值r<对角矩阵形式>
使Ax=xr
max(max(abs(r))):找绝对值最大的特征值
matlab一些函数用法:
vpa(xxx,数字)
四舍五入控制有效数字位数,xxx可以是数,也可是表达式。poly2sym(系数行向量,x)
系数行向量->多项式,各项次数由系数数量控制求线性规划问题:linprog()
scatter()画散点图
size(A):矩阵A的行、列数 size(A,1):A的行数 size(A,2):A的列数
常微分方程符号解:fun=dsolve(‘equ1’,’equ2’,’equ3’),fun即为最终求得的微分方程,默认对自变量t求导
微分方程数值解:ode工具箱对符号方程中特定符号进行替换:subs(fun,{‘a’,’b’},{3,5})
可替换为特定数值、其他符号变量 可替换为数组:得到同阶数组积分
数值积分:integral(fun,xmin,xmax)
符号积分:int()解方程组
solve:求方程组的符号解
linsolve:求线性方程组数值解
fsolve:求非线性方程组数值解matlab中没有求解不等式的函数,只能先解对应的等式再画图判断
normpdf(x,mu,sigma) x(向量)的正态分布概率密度函数matlab插值函数:y=interp1(x0,y0,x,’spline’) spline为三次样条插值
x0,y0为原始点 x为更密集的需求值点,y为求得的函数值,一般不推荐外插
二维插值:z = interp2(x0,y0,z0,x,y,’spline’)多项式拟合:[p]=polyfit(x,y,n) 和 y1=polyval(p,x1) p为降幂排列的阶数
matlab拟合工具箱:cftool最后legend加公式:legend(‘样本’,[‘y = ‘,sprintf(‘%.3fx^2+%.3fx%.3f’,p(1),p(2),p(3))]);
一些统计学名词:
- SSE(残差平方和):The sum of squares due to error,越接近0越好。点对点误差平方,再加和
- MSE(残差平方和均值):Mean squared error,SSE/n
- RMSE:MSE开根号
- SSR(回归平方和):预测数据与原始数据均值之差的平方,再加和。点对面
- R-square(确定系数):[0,1],越接近1越好
- Adjusted R-square(矫正后确定系数):对复杂模型的惩罚
求差分、求导都是用的diff函数
桌面文件路径:C:\Users\35055\Desktop.….
读excel:A=xlsread(filename,sheet,’B3:C4’) sheet为对应数字
写excel:直接粘贴元胞数组:通过小括号()加下标访问,返回的是对应cell的格式。
通过大括号{}加下标访问,返回的是对应cell的内容。excel不同的样本纵向排列,单个样本不同的变量/观测横向排列。
但对于神经网络、支持向量机,样本横向排列,变量纵向排列Min-Max标准化:将矩阵的【每一行】进行标准化处理(针对模式识别智能算法)
A=[1,2,3];
A=mapminmax(A,0,1); 标准化到0~1之间
[Y,PS] = mapminmax(X,YMIN,YMAX)
Y = mapminmax(‘apply’,X,PS)
X = mapminmax(‘reverse’,Y,PS)legend加公式 legend(‘样本’,[‘y = ‘,sprintf(‘%.3fx^2+%.3fx%.3f’,p(1),p(2),p(3))]);
rng(2),设置随机数种子。之后rand()产生的随机数都是一定的
Post Date: 2018-01-20
版权声明: 本文为原创文章,转载请注明出处