Matlab最最基本的操作
Matlab入门
一、Matlab桌面
Command命令区
Current folder当前目录区
Workspace变量保持区
Edit可以调出脚本编辑区
二、数组
1.x(1)MATLAB和C语言不一样,数组第一个元素下标是1
2.创建方法:x=[1 2 3 4] x=first:last x=firs:increment:last x=linspace(first,last,n) x=logspace(first,last,n)%从10到10
3.转置:’ 对实数向量是普通转置,但对复数向量是共轭转置,这时可以用 .’ 这个可以对复数向量普通转置
4.运算:
标量和数组就可以简单理解为普通加减乘除
数组和数组
>> A=[1 2 3]
>> B=[4 5 6]
>> A./B
ans =
0.2500 0.4000 0.5000
>> A.\B
ans =
4.0000 2.5000 2.0000
5.标准数组
ones(m,n) zeros(m,n) eye(m,n) rand(m,n) randn(m,n)
>> a=1:3
a =
1 2 3
>> diag(a)
ans =
1 0 0
0 2 0
0 0 3
>> diag(a,1)
ans =
0 1 0 0
0 0 2 0
0 0 0 3
0 0 0 0
>> diag(a,-1)
ans =
0 0 0 0
1 0 0 0
0 2 0 0
0 0 3 0
特殊方式创建:
>> d=pi;
>> d(ones(3,4))
ans =
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
>> repmat(d,3,4)
ans =
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
5.一些操作
>> A=[1 2 3;4 5 6;7 8 9];
>> A(3,3)=0
A =
1 2 3
4 5 6
7 8 0
>> A(:,4)=4
A =
1 2 3 4
4 5 6 4
7 8 0 4
>> B=A(end:-1:1,:)
B =
7 8 0 4
4 5 6 4
1 2 3 4
7.reshape的使用方法
>> d=pi;
>> A=reshape(pi,3,4)
Error using reshape
To RESHAPE the number of elements must not change.
>> d=[1 2 3 4 5 6]
d =
1 2 3 4 5 6
>> A=reshape(d,3,4)
Error using reshape
To RESHAPE the number of elements must not change.
>> A=reshape(d,2,3)
A =
1 3 5
2 4 6
8.数组排序
>> A=randperm(8)
A =
4 5 8 6 3 7 1 2
>> help randperm
randperm - 随机置换
此 MATLAB 函数 返回行矢量,其中包含从 1 到 n(包括二者)之间的整数随机置换。
p = randperm(n)
p = randperm(n,k)%k是随机生成小于等于n的个数
>> sort(A)
ans =
1 2 3 4 5 6 7 8
>> sort(A,'ascend')
ans =
1 2 3 4 5 6 7 8
>> sort(A,'descend')
ans =
8 7 6 5 4 3 2 1
>> [B,index]=sort(A)
B =
1 2 3 4 5 6 7 8
index =
7 8 5 1 2 4 6 3
9.find查找函数
10.size
>> A=[1 2 3;4 5 6];
>> size(A)
ans =
2 3
>> r=size(A,1)%行
r =
2
>> l=size(A,2)%列
l =
3
三、循环
避绕式:&&,||适用于标量关系表达式中,按顺序执行时,当执行到一步可以得到最终结果,就绕过后面的步骤。
for x = array
commands
end
for i=1:N
x(i) = 2*pi*(i-1)/N;
end
for循环是根据条件数组array中列数决定其循环执行的次数。
while (1+EPS)>1
EPS=EPS/2;
num=num+1;
end
EPS=1;
for num=1:1000
EPS=EPS/2;
if(1+EPS)<=1
EPS=EPS*2;
break;
end
end
for num=1:1000
EPS=EPS/2;
if(1+EPS)>1
continue;
end
EPS=EPS*2;
break;
end
四、函数
1.matlab可以看成黑箱,传入参数,获得结果。
2.函数创建方式:
M文件函数,匿名函数,内联函数。
首先M文件函数和M脚本文件的区别:1.M函数文件名必须与函数名相同2.M函数文件调用时候需要传入参数,而M脚本只需在命令行输入文件名3.M函数文件内部变量不会在工作区显示,只有输出结果才会,而M脚本所有变量都会在工作区显示。
然后是匿名函数和内联函数创造出来是干嘛的:因为有时候需要将函数作为参数传入另一个函数,不过他俩的作用是相同的,内联先出来,匿名在之后的版本才出来
一开始出现了内联后来是匿名
五、文件操作
1.GUI:graphical users interface 图形用户接口
2.save filename var1 var2 var3,将数据存储在filename.mat里
同理有一个对应的加载命令,load操作相同
六、矩阵代数(重要)
1.矩阵是MATLAB的核心,一开始就是为了解决线性代数操作
2.最常见的问题
基本问题就说验证上述等式的解是不是存在,当有解时如何求解,在课本的矩阵代数可以用:高斯消元法,LU因数分解法,或者直接用A -1 求解。
例如:
A=[1 2 3;4 5 6;7 8 0];
y=[366;804;351];
由线性代数理论可知,只有在A的秩以及广义矩阵[A y]的秩都等于3时,上述等式才有一个惟一的解。 另外,用户还可以检查A的条件数。如果条件数不是特别大,那么A就有一个便于处理的逆存在。下面的代码分别计算A和[A y]的秩,以及A的条件数:
>>rank(A)
ans=
3
>>rank([A y])
ans =
3
>>cond(A)
ans =
35.106
故A*x=y是存在解的,MATLAB有两种方法求解,后者用的更多
1.利用A逆求解>>x=inv(A)y
2.利用矩阵左除运算>>x=A\y
以上讨论的都是方程数和未知数相等的情况,若不相等时,方程组不存在唯一解,两种情况rank(A)=min(r,c),A行数大于列数,r>c时成为超定方程,利用e=Ax-y最小,解称为最小二乘解。同理若r<c称为欠定方程组,有无穷多解,MATLAB可以得到两个解,一个利用除法得到,一个利用x=pinv(A)*y得到。
七、数据分析
1.在没有特殊指定时MATLAB各种数值操作执行列优先。
2.avg_temp = mean(temps,1) %列
avg_tempr= mean(temps,2) %行
八、数据插值
1.因为我们有时候不仅仅对给定数据的感兴趣,还对曲线上其他点感兴趣,这个时候就用到插值
2.一维插值
interp1(a,b,c,'linear')
interp1(a,b,c,'cubic')
interp1(a,b,c,'spline')
interp1(a,b,c,'nearest')
求2.5KHZ的声音压力水平:
```c
>>s=interp1(Hz,spl,2.5e3)
s=
-5.5
3.mesh用法,meshgrid用法 二维插值
mesh(x,y,z)生成三维图形
meshgrid()该函数接受两个向量作为输入,生成这两个向量的元素间的所以可能的组合
九、多项式
1.多项式和多项式的根都是用向量表示的,将多项式表示为行向量,根表示为列向量
2.由多项式求根,由根求多项式
>>p=[1 -12 0 25 116]
>>r=roots(p)
>>pp=poly(r)
pp=
1 -12 -1.77664e-014 25 116
>>pp(abs(pp)<1e-12) = 0
pp=
1 -12 0 25 116
3.多项式乘法:本质是系数向量的卷积运算
a=[1 2 3 4];
b=[1 4 9 16];
c=conv(a,b)
c=
1 6 20 50 75 84 64
4.多项式除法:[q,r]=deconv(c,b) q是商,r是余数
5.多项式的微分和积分:
g=[1 6 20 48 69 72 44];
>>h=polyerder(g)
h=
6 30 80 144 138 72
>>polyint(h,44)提供一个积分常数
ans=
1 6 20 48 69 72 44
6.多项式求值
p=[1 4 -7 -10];
x=linspace(-1,3);
v=polyval(p,x);
plot(x,v)
7.曲线拟合,线性回归
首先什么叫线性回归:拟合阶数为1时就说线性回归。是看测量数据点与该曲线上对应点之间的平方误差是否达到最小,这种曲线拟合的方法称为最小二乘法拟合
十、微分,积分
这个是针对函数的积分,之前是针对多项式的。
1.积分:quad quadl dblquad triplequad
用法:>>aaa@qq.com;
>>quad(H,-1,2)
>>dblquad(Fname,xmin,xmax,ymin,ymax)二维积分
2.微分:这个类似之前所说的多项式的。先拟合成曲线,然后用polyder求拟合曲线的导数。
前向微分,后向微分,中心微分???
十一、图形
1.线型,标记,颜色
2.图形格栅,轴框,标签
2.1 box on/off
2.2 xlabel ylabel
2.3 title
2.4 text(x,y,'string')
2.5 grid on/off
2.6 axis([xmin xmax ymin ymax])
2.7 hold on 在一个图里接着画另一个图
2.8 figure(n)在打开新图
2.9 subplot(m,n,p)
2.10 legend('a','b')图例框
2.11set(gca,'YGrid','on')平行x轴虚线
3.画图函数
3.1plot
3.2semilogx semilogy loglog
3.3plotyy(x,y,x,z)两个y轴,不同刻度
3.4bar barh bar3 bar3h stairs hist stem pie pie3 scatter polar
4.三维函数
4.1plot3()
4.2mesh()网格图
4.3surf()表面图
4.4view(az,el)az方位角,el仰角
上一篇: PHP/MYSQL 與 IOS
下一篇: 经典SQL语句大全,sql语句大全