Matlab简单实例学习.docx
《Matlab简单实例学习.docx》由会员分享,可在线阅读,更多相关《Matlab简单实例学习.docx(34页珍藏版)》请在冰豆网上搜索。
![Matlab简单实例学习.docx](https://file1.bdocx.com/fileroot1/2022-10/28/ffed7f89-53ae-4365-be5e-a38d4088a094/ffed7f89-53ae-4365-be5e-a38d4088a0941.gif)
Matlab简单实例学习
Matlab程序代码
绘制的函数图象。
fv
clear;
t=0:
0.02:
10;
f1=10/sqrt(7.75).*exp(-1.5*t);
f2=sin(sqrt(7.75).*t);
y=f1.*f2;
plot(t,y,'-k',t,y,'ok');
xlabel('t');ylabel('y(t)');title('函数图像')
axis([-210-0.52])
拉氏变换
clear;
clc;
symsstfs1fs2fs3ft1ft2ft3;
L=1,C=0.1,R=[1.535];
h1=1/(L*C*s^2+R
(1)*C*s+1);
h2=1/(L*C*s^2+R
(2)*C*s+1);
h3=1/(L*C*s^2+R(3)*C*s+1);
fs1=h1*(1/s);
fs2=h2*(1/s);
fs3=h3*(1/s);
ft1=ilaplace(fs1,s,t);
ft2=ilaplace(fs2,s,t);
ft3=ilaplace(fs3,s,t);
ezplot(t,ft1);
holdon;
ezplot(t,ft2);
holdon;
ezplot(t,ft3);
信号编码
对[11011101001]进行编码。
clear;
clc;
c=[11011101001]
fori=1:
length(c)
ifi==1
d1(i)=0;d2(i)=0;
elseifi==2
d1(i)=c(i-1);d2(i)=c(i-1);
elseifi==3
d1(i)=mod(c(i-1)+c(i-2),2);
d2(i)=c(i-1);
else
d1(i)=mod(c(i-1)+c(i-2),2);
d2(i)=mod(c(i-1)+c(i-3),2);
end
end
d1
d2
迭代法
使用一般迭代法求解方程的解。
第一根:
clear;
clc;
x0=10;err=1;
while(err>10^-6)
F1=x0;
F2=log(3*x0^2);
err=abs(F1-F2);
x0=F2;
end
x0
第二根:
clear;
clc;
x=1;err=1;
while(err>10^-6)
F1=x;
F2=sqrt(exp(x)/3);
err=abs(F1-F2);
x=F2;
end
x
第三根:
clear;
clc;
x=10;err=1;
while(err>10^-6)
F1=x;
F2=-sqrt(exp(x)/3);
err=abs(F1-F2);
x=F2;
end
x
牛顿迭代法
使用牛顿迭代法求解方程的解。
symsxfxfx1;
fx=2*x^3-4*x^2+3*x-6;
fx1=diff(fx)
err=1;k=1;x0=1.5;
while(err>10^-6&&k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0))
x0=x1;
err=abs(x0-x1)
k=k+1;
end
k
x0
牛顿迭代法求解
使用牛顿迭代法求解方程的解。
第一解:
symsxfxfx1;
fx=x.^3-sin(x)-12*x+1;
fx1=diff(fx);
err=1;k=1;x0=-4;
while(err>10^-6&&k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0));
err=abs(x0-x1);
x0=x1;
k=k+1;
end
k
x0
第二解:
symsxfxfx1;
fx=x.^3-sin(x)-12*x+1;
fx1=diff(fx);
err=1;k=1;x0=0;
while(err>10^-6)&&(k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0));
err=abs(x0-x1);
x0=x1;
k=k+1;
end
k
x0
第三解:
symsxfxfx1;
fx=x.^3-sin(x)-12*x+1;
fx1=diff(fx);
err=1;k=1;x0=4;
while(err>10^-6)&&(k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0));
err=abs(x0-x1);
x0=x1;
k=k+1;
end
k
x0
普通迭代法求解
使用普通迭代法求解方程的解。
clear;
clc;
err1=1;err2=1;err3=1;x01=3;x02=0;x03=-3;k=3;
while(err1>10^-6)&&(err2>10^-6)&&(err3>10^-6)&&(k<1000)
F11=x01;
F12=(sin(x01)+12*x01-1)^(1/3);
err1=abs(F11-F12);
x01=F12;%第一解
F21=x02;
F22=(x02^3-sin(x02)+1)/12;
err2=abs(F21-F22);
x02=F22;%第二解
F31=x03;
F32=-sqrt((sin(x03)-1)/x03+12);
err3=abs(F31-F32);
x03=F32;%第三解
k=k+1;
end
x=[x01x02x03]
调用matlab函数求解方程。
clear;
clc;
symsxab;
p=x.^2-a*x-4*b;
r=solve(p,x);
r
clear;%roots求解法
clc;
symsx;
p=[1000-12-3];
r=roots(p);
r
clear;%solve求解法
clc;
symsx;
p=x.^6-x.^2+2*x-3;
r=solve(p,x);
r
clear;clc;
symsxf;
f=@(x)x.*sin(x)-1;
x0=1;tol=1e-6;
z1=fzero(f,x0);
x0=2.7;tol=1e-6;
z2=fzero(f,x0);
z=[z1z2]
clear;clc;%求非线性方程组的解
symx;
fun='[x
(1)-x
(2)^2,x
(2)-cos(x
(1))]'
x0=[1,2]
f=fsolve(fun,x0)
clear;clc;%求解非线性方程的解
symsx;
fun='[sin(x)-log(x+0.1)]';
x0=1;
f=fsolve(fun,x0)
矩阵基本操作
clear;clc;%加、减、乘省略,只需补零即可运算
A=[1234;2312;111-1;10-2-6];
B=[5;6;7;8];
C1=A\B%左除
C2=det(A)%求行列式
C3=inv(A)%求逆
C4=A^3%求幂
C5=rank(A)%求秩
C6=A'%求转置
C7=rref(A)%行变换简
求解方程的解。
clear;clc;
A=[42-1;3-12;1130];
b=[2;10;8];
rref(A)
rref([A,b])
R1=rank(A)
R2=rank([A,b])
求解方程的解。
clear;clc;
A=[2310;1-240;38-20;4-190];
b=[4;-5;13;-6];
rref(A)
rref([A,b])
R1=rank(A)
R2=rank([A,b])
求解方程的解。
clear;clc;
A=[1111;12-14;2-3-1-5;31211];
b=[5;-2;-2;0];
rref(A)
rref([A,b])
R1=rank(A)
R2=rank([A,b])
多项式拟合
clear;clc;
x=0:
0.1:
1;
y=[2.32.52.12.53.23.63.03.14.15.13.8];%输入数据
[p1,s1]=polyfit(x,y,2);
[p2,s2]=polyfit(x,y,3);
[p3,s3]=polyfit(x,y,7);%求得多项式系数p
y1=polyval(p1,x);
y2=polyval(p2,x);
y3=polyval(p3,x);%由p得到x的多项式
r1=corrcoef(y,y1)
r2=corrcoef(y,y2)
r3=corrcoef(y,y3)%计算相关系数
plot(x,y,'.k',x,y1,'.r',x,y2,'.g',x,y3,'.b');%图像中Insert->Legend可加标注。
最小二乘拟合
functiony=f(x)%f文件定义
t=[0.250.511.523468];
c=[19.2118.1515.3614.1012.989.327.455.243.01];
y=c-x
(1).*exp(-x
(2).*t);
clear;clc;%主程序
t=[0.250.511.523468];
c=[19.2118.1515.3614.1012.989.327.455.243.01];
[p,s]=polyfit(t,c,7);%求七阶多项式拟合
y1=polyval(p,t);
r1=corrcoef(c,y1)
x0=[12];
[x]=lsqnonlin('f',x0)%最小二乘拟合
x
y2=x
(1).*exp(-x
(2).*t);
r2=corrcoef(c,y2)
v=0:
0.01:
8;
y11=polyval(p,v);
plot(t,c,'ok',v,y11,'b',t,y2,'r');
legend('原函数','多项拟合','最小二乘拟合');
最小二乘拟合
functiony=f1(x)%定义f1
t=[0.51.01.52.02.53.0];
c=[1.752.453.814.808.008.60];
y=c-x
(1).*exp(-x
(2).*t);
clear;clc;%主程序
t=[0.51.01.52.02.53.0];
c=[1.752.453.814.808.008.60];
[p,s]=polyfit(t,c,7);
y1=polyval(p,t);
r1=corrcoef(c,y1)
x0=[12];
[x]=lsqnonlin('f1',x0)
y=x
(1).*exp(-x
(2).*t);
r2=corrcoef(c,y)
v=0.5:
0.01:
3;
y11=polyval(p,v);
y2=x
(1).*exp(-x
(2).*v);
plot(t,c,'o',v,y11,'r',v,y2,'g');
legend('数据','七次多项式拟合','最小