Matlab知识点总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
符号积分变换
傅里叶变换及其反变换
1.傅里叶变换f=f(x) F=F(w)
syms x w u v
f=sin(x)*exp(-x^2);
F1=fourier(f)
F1 = transform::fourier(sin(x)/exp(x^2), x, -w)
>> f=x;
F2=fourier(f)
F2 = pi*dirac(w, 1)*2*i
>> h=x*exp(-abs(x));F3=fourier(h)
F3 = -(w*4*i)/(w^2 + 1)^2
>> h=x*exp(-abs(x));F3=fourier(h,u)
F3 =-(u*4*i)/(u^2 + 1)^2
2.傅里叶反变换
syms w v x t
g=exp(-abs(x));IF2=ifourier(g)
IF2 = 1/(pi*(t^2 + 1))
拉普拉斯变换及其反变换
1.拉普拉斯变换
syms x s t v
f1=sqrt(t);L1=laplace(f1)
L1 =pi^(1/2)/(2*s^(3/2))
2.拉普拉斯反变换
syms a s t u v x
f=exp(x/s^2);IL1=ilaplace(f)
IL1 =ilaplace(exp(x/s^2), s, t)
Z变换及其反变换
方程的解析解
线性方程组的解析解
包括求解线性方程组和非线性方程组的函数solve(),也有求解常微分方程组的函数dsolve()
L1='x+y+z=10';
L2='3*x+2*y+z=14';
L3='2*x+3*y-z=1';%L1、L2、L3分别是三个字符串
g=solve(L1,L2,L3)
g =
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym] %表明g是一个结构数组,其中每个元素为一>> g.x %符号类型的量,用如下方法查看方程解的具体值ans =1
一般求解方法:
L1='x+y+z=10';
L2='3*x+2*y+z=14';
L3='2*x+3*y-z=1';
[x y z]=solve(L1,L2,L3)
x =1
y =2
z =7
线性方程组的解析解
>> f=sym('a*x^2+b*x+c=0');xf=solve(f)
xf =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
>>syms y z u v w
eq1=u*y^2+v*z+w;
eq2=y+z+w;
[y z]=solve(eq1,eq2,y,z)
y =
(v + 2*u*w + (v^2 + 4*u*w*v - 4*u*w)^(1/2))/(2*u) - w
(v + 2*u*w - (v^2 + 4*u*w*v - 4*u*w)^(1/2))/(2*u) - w
z =
-(v + 2*u*w + (v^2 + 4*u*w*v - 4*u*w)^(1/2))/(2*u)
-(v + 2*u*w - (v^2 + 4*u*w*v - 4*u*w)^(1/2))/(2*u)
常微分方程组的解析解
在微分方程组的表达式equ中,大写字母D表示对自变量(设为x)的微分算子:D=d/dx,D2=d2/d2x...微分算子D后面的字母则表示为因变量,即带求解的未知函数。
>> y=dsolve('Dy+a*x=0','x')
y =C2 - (a*x^2)/2
>> y=dsolve('D2y+2*x=2*y','x')
y = x + C4*exp(2^(1/2)*x) + C5/exp(2^(1/2)*x)
>> y=dsolve('D2y+2*x=2*y','y(2)=5','Dy(1)=2','x')
y =x + (exp(2^(1/2)*x)*(6*exp(2^(1/2)) + 2^(1/2)))/(2*exp(2^(1/2))*(exp(2*2^(1/2)) + 1)) - (2^(1/2)*exp(2*2^(1/2))*(exp(2^(1/2)) -
3*2^(1/2)))/(2*exp(2^(1/2)*x)*(exp(2*2^(1/2)) + 1))
MATLAB程序设计
全局变量global A B C 变量名区分大小写
脚本文件是m文件中最简单的一种输入顿号输出参数,用命令语句可以控制MATLAB命令工作空间的所有数据。
编程计算向量元素的平均值:
x=input('输入向量:x='); %average_1.m计算向量元素的平均值
[m,n]=size(x);
if (m==1|n==1)
average=sum(x)/length(x)
else error('必须输入向量。
')
End
如果m文件的第一个可执行语句以function开始,该文件就是函数文件,每一个函数文件都定义一个函数。
函数有自己独立的工作空间,它与MATLAB的工作空间区分开。
Function y=average_2(x) %函数average_2(x)用以计算向量元素的平均值
%输入参数x为输入向量,输出参数y为计算的平均值MATLAB的程序控制结构
For循环一般形式
For 循环控制变量=表达式1:表达式2:表达式3
For x=-2.0:0.25:-0.75
While循环
选择结构:MATLAB中的选择结构语句有if语句、switch语句和try语句
A=[];
for k=1:5
for j=1:5
if k==j
A(k,k)=5;
elseif abs(k-j)==1
A(k,j)=1;
else
A(k,j)=0;
end
end
end
A
结果:A =
5 1 0 0 0
1 5 1 0 0
0 1 5 1 0
0 0 1 5 1
0 0 0 1 5
程序流的控制
1.break语句
终止本层for或while循环,跳转到本层循环语句end的下一条语句。
2.return语句
终止被调用函数的运行,返回到调用函数。
3.pause语句
Pause:暂停程序运行,按任意键继续
Pause(n):程序暂停运行n秒后继续。
Pause on/off:允许/禁止其后的程序暂停
4.continue语句
在for循环或while循环中遇到该语句,将跳过其后的循环体语句,进行下一次循环。
数据的输入与输出
键盘输入语句input
x=input(‘prompt’);
x=input(‘prompt’,’s’)%不至于将输入的数字看成是数值型数据。
屏幕输出语句disp(x)
M数据文件的存储/加载(save/load)
格式化文本文件的存储/读取(fprintf/fxcanf)
二进制数据文件的存储/读取(fwrite/fread)
数据文件行存储/读取(fgetl/fgets)
MATLAB文件操作
MATLAB数据可视化
使用函数figure来建立图形窗口,最简单的调用方式figure
Close关闭当前图形窗口
基本二维图形绘制
(1)plot:x轴和y轴均为线性刻度
(2)Loglog:x轴和y轴均为对数刻度
(3)Semilogx:x为对数刻度,y为线性刻度
(4)Semilogy:x为线性刻度,y为对数刻度
(5)Plotyy:绘制双纵坐标图形,绘制两条具有不同纵坐标的曲线,调用格式Plotyy(x1,y1,x2,y2)
Plot是最基本的二维绘图函数:
Plot(Y),plot(X,Y)
>> x=0:0.05:5;
y=sin(x.^2);
plot(x,y);
>> x=0:0.05:5;
y1=0.2*x-0.8;
y2=sin(x.^2);
plot(x,y1,x,y2);
>> x=0:pi/180:2*pi; %两条不同纵坐标的曲线,颜色不同加以区分y1=exp(-0.3*x).*cos(2*x);
y2=10*exp(-1.5*x);
plotyy(x,y1,x,y2);
条形图:
>> x=-2.9:0.2:2.9;
bar(x,exp(-x.*x));
极坐标:
t=0:0.1:2*pi;
polar(t,abs(cos(2*t)));
针状图:
>> x=0:0.1:4;
y=(x.^0.8).*exp(-x);
stem(x,y)
阶梯图:
>> x=0:0.25:10;
stairs(x,sin(2*x)+sin(x))
饼图:
>> x=[43,78,88,43,21];
pie(x)
色彩和线型
>> x=0:0.2:8;
y1=0.2+sin(-2*x);
y2=sin(x.^0.5);
plot(x,y1,'g-+',x,y2,'r--d'); %y1采用绿色、实线、加号标记;
%y2采用红色,虚线,菱形表示坐标轴及标注
函数axis指定坐标轴的刻度范围其调用格式为
Axis([xmin,xmax,ymin,ymax])
hold on/off 保持原有图形/刷新原有图形
axis on/off 显示/取消坐标轴
xlabel(‘option’) x轴加标注,option表示任意选项
ylabel(‘option’) y轴加标注
Title(‘option’) 图形加标题
Legend(‘option’) 图形加标注
Grid on/off 显示/取消网格线
Box on/off 给坐标加/不加边框线
>>x=0:0.05:5;
y1=exp(0.4.^x)-1.5;
y2=sin(x*4);
plot(x,y1,x,y2,'r-.');
line([0,5],[0,0]); %画直线,代替横坐标
xlabel('input');ylabel('output');
title('two function');
legend('y1=exp(0.4^x)-1.5','y2=sin(x*4)')
grid on%画网格线
在一个图形窗口中用函数subplot可以同时画出多个子图形x=linspace(0,2*pi,100);
subplot(2,2,1);plot(x,sin(x));
xlabel('x');ylabel('y');title('sin(x)');
subplot(2,2,2);plot(x,cos(x));
xlabel('x');ylabel('y');title('cos(x)');
subplot(2,2,3);plot(x,exp(x));
xlabel('x');ylabel('y');title('exp(x)'); subplot(2,2,4);plot(x,exp(-x));
xlabel('x');ylabel('y');title('exp(-x)');
三维曲线图
用plot3(x1,y1,z1)绘制三维图形
t=0:0.5:20;
plot3(sin(t),cos(t),t);
grid on
三维曲面图
格点矩阵:[X,Y]=meshgrid(x,y)
Surf(Z),surf(X,Y,Z)
Surfc():曲面下绘制曲面的等高线。
球:
[X,Y,Z]=sphere(30);
surf(X,Y,Z);
Shading faceted:分层网格线
Shading flat:平滑式。