Matlab基础自学
感觉Matlab和python很像只不过多了一些运算函数而已
基础函数
https://ww2.mathworks.cn/help/matlab/ 查函数使用
- 快速生成矩阵
&直接法
a =[1,2,3;4,5,6;7,8,9];
分号分割行 逗号分割列
&冒号循环生成一维矩阵
b = 1:1:10 ;
循环十次 部长为1 一维矩阵
&使用函数生成
linspace(开始,结束,元素个数),等差生成指定元素的一维矩阵,省略个数则生成100个
c = linspace(0,10,5)
&特殊矩阵
e = eye(4) 四维单位矩阵
z = zeros(1,4) 全零矩阵 1x4
o = ones(4,1) 全1阵
r = rand(4) 0~1分布随机矩阵
rn = randn(4) randn 0均值Gaussian分布随机阵
矩阵运算
- diag(a,1) 矩阵主对角线往上的地方生成对角阵(行向量)
往下生成可以用负号也可以tril
-
点乘 a.*a 对应位置相乘
*法是一行×一列再相加 -
逆矩阵
pinv(a) -
特征值 特征向量
[v,D] = eig(a)
输出v为特征向量 D为特征值对角阵 -
行列式
det(a) -
秩
rank(a) -
伴随
compan(a) -
转置
T_a = a’ -
指定维数拼接 c1_a = cat(1,a,a) 垂直拼接
c2_a = cat(2,a,a) 水平拼接 -
矩阵变维
rs_a = reshape(a,1,9) -
获取矩阵的行列数
[row_a,col_a] = size(a) -
行列中最大的
len_a = length(a) -
多维数组
nul_1(:,:,1) = [1,2,3;2,3,4]
nul_1(:,:,2) = [1,2,3;2,3,4] 两个矩阵存在nul_1中
还有直接用cat连接成多维数组
其他常用
-
_2_----->类型转换 如num2str 数字转字符串
dec2hex 十进制转换为十六进制 -
abs 取绝对值 取字符串的ascii码
char转换为字符串 -
输入函数 varargin
输出函数 varargout -
脚本文件 .m 不需要传参
-
函数文件.h 需要传参
快捷键(待补充)
ctrl i 智能调整缩进
Clear 清除全部变量
clear:clc; 清除命令行窗口
绘图
和python类似
直接plot()传入函数 不传入x默认横坐标以10为单位
x设定横坐标刻度
y1 = sin(x);
y2 = cos(x);
y=[y1',y2']; %令y1 y2组成矩阵 然后plot(y)直接画出两条曲线
改变曲线样式参数 带引号 颜色:样式
plot(x,y1,'b:o'); %蓝色 点线 圆圈
% b蓝 g绿 r红 c青 m紫 y黄 k黑 w白
%-实线 :点线 --虚线 -.点画线
%.实线 o圆圈 x叉 +十字 *星号 s方块 d钻石 v下三角 ^上三角 <左三角 >右三角 p五角星 h六角星
规定横坐标范围
axis([-1pi , 3pi , -1.5 , 1.5])
title(’’) 图像标题
legend(’’,’’,‘best’) str的顺序与绘图顺序一致 ‘best’指图例位置最佳化
图像保持 hold on 同时画多个图像时 hold off关闭
分割绘制
subplot(2,2,1); %分割成2x2画在第一个区域
plot(x,y1);
subplot(2,2,2); %分割成2x2画在第二个区域
plot(x,y2);
三维曲线
就 x y z同时存在呗
x = 0:0.1:2pi;
y = sin(x); z = cos(x);
plot3(x,y,z,'b-’);
三维曲面
#三维曲线曲面绘制
#三维曲线
x = 0:0.1:2*pi;
y = sin(x);z = cos(x);
plot3(x,y,z,'b-*');
#三维曲面
#三维网络
x = -5:0.1:5; #规定x轴采样点,也规定了x轴的范围
y = -4:0.1:4; #同上
[X,Y] = meshgrid(x,y); #绘制xoy网面格点
Z = x.^2+Y.^2;
mesh(X,Y,Z) #XY时meshgrid得到的网络点,Z时网络顶点
#三位表面图
x = -5:0.1:5; #规定x轴采样点,也规定了x轴的范围
y = -4:0.1:4; #同上
[X,Y] = meshgrid(x,y); #绘制xoy网面格点
Z = x.^2+Y.^2;
surf(X,Y,Z) #XY时meshgrid得到的网络点,Z时网络顶点 仅仅是换了个函数
多项式
-
多项式
p = [1,2,3,4]
f1 = poly2str(p,‘x’) 输出多项式的字符串 未知数为x
f2 = ploy2sym( p ) 生成多项式函数 f2 = x^3 + 2*x^2 + 3x + 4 -
多项式求值
y1 = polyval(p,x) x为输入的变量 可以是任何数字 -
求根函数
r = roots§; -
由根求系数 结果为系数矩阵
p0 = poly( r ); -
数据插值 插值法 在数据分析里讲过 是插值基函数的线性组合
X = [-3 , -1 , 0 , 1 , 3]
Y = [9 , 1 , 0 , 1 , 9]
y2 = interp1(X , Y , 2) 插值预测x = 2时的函数值(数据太小可能不是很准)
用spline方法(三次样条)插值预估x=2时的函数值 比普通插值精准一点
y2 = interp1(X , Y , 2 , ‘spline’) ; -
多项式函数运算
-
极限与微积分