符号积分变换
傅里叶变换及其反变换
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:平滑式
一、常用命令总结
eps 机器浮点数精度 realmax 最大正浮点数
Inf 无穷大 NaN 不定值
Any 向量中的元素有非零元素时返回真。
All 向量中的元素都是非零元素时返回真。
二 函数功能
1、linspace(初值,终值,n)创建以以初值开始终值结束且共有n个元素的行向量。
2、logspace(初值,终值,n)创建以以初值开始终值结束且共有n个对数分割量的行向量。
3、cat(dim,a1,a2)用来创建多维数组,dim是维数。
4、B=flipud(A)矩阵B由矩阵A上下翻转所得;B=fliplr(A)矩阵B由矩阵A左右翻转所得。
5、L=tril(A,K)L矩阵第K条对角线及以下的元素取矩阵A的元素,其余为0,L=tril(A)L矩阵主对角线及以下的元素取矩阵A的元素,其余为0;L=triu(A,K)、L=triu(A)同上。
6、创建逻辑类型矩阵或数组的函数有三个:logical函数可将任意类型的数组转化为逻辑类型;true产生逻辑真数组;false产生逻辑假数组;eye函数产生单位矩阵。
7、strcmp函数是比较两个输入的字符串是否相等,strncmp比较两个输入字符串的前几个字符是否相等。
8、isletter判断字符串中是否有字母,isspace判断字符串中是否有空白字符。
9、mean函数用来求列向量的平均值,det(A)求矩阵A的行列式,rank(A)求A的秩,inv
(A)求A的逆矩阵,pin(A)求矩阵A的违逆。
10、Cumprod求列元素的累积积,Cumsum求列元素的累积和,Diff求差分,Prod求列元素的积,Sort按照升序对列元素进行排序,Sortrows按照升序对行元素进行排序,Std求列元素的标准差。
11、limit函数用来求函数极限,diff函数实现某一函数的求导,int函数实现某一函数的积分运算,symsum用于级数的求和。Sym用来生成单个的符号变量,ezplot函数用来绘制符号函数,ezpolar用来绘制极坐标下的函数。
12、solve用来求解一般代数方程的符号解,dsolve是用来求解微分方程的符号解。
13、[N,D]=numden(A)函数提取符号表达式A中的分子和分母并分别将其存储在N和D中; Collect函数用来合并符号表达式中的同类项;expand表示符号表达式的展开,factor表示符号表达式的因式分解;gcd(n,m)返回m,n的最大公约数。
14、help+filename此命令可以查看函数的功能; lookfor+filename此命令可以查找所有带filename的函数。
15、创建M文件的时候,一定要防止文件名与Matlab内置函数或工具箱的函数重名,否则会被替换。
16、input命令用来提示用户从键盘输入数据或表达式;continue命令的作用是结束本次循环,即跳出循环体中未执行的指令,进入下一循环;return命令能是当前的函数推出。
17、一般情况下在M文件运行的时候在命令窗口看不到文件中的命令,若需要将所有文件中的命令在执行过程中显示出来,此时可以用echo命令。
18、一个嵌套函数可以被一下函数调用:该嵌套函数的上一层函数、同意母函数下的同级嵌套函数、任意低级别的函数。
19、@为MATLAB的操作符,用于建立函数句柄;functions命令用来返回函数句柄相关的信息。
plot X-Y方向绘图
loglog X-Y方向的双对数绘图
semilogx X-Y方向的半对数绘图(X轴取对数)
semilogy X-Y方向的半对数绘图(Y轴取对数)
ploar 极坐标绘图
mesh 三维网状曲面图形
bar 直方图
title 图形标题
xlabel X轴的标注
ylabelY 轴的标注
text 标注数据点
grid 画坐标线
20、ones(m,n)函数产生m行n列全1矩阵,zero(m,n)产生m行n列的全0矩阵;rand('state',s)表示随机产生数的状态state,一般情况下不用指定状态。但是有的书籍作者为了让读者能够看到和他书本的同样结果,采用了设置state,rand('state',0)作用在于如果指定状态,产生随机结果就相同了。
abs(x) 求x的绝对值。例:abs(-3)=3 x为整数
chr(x) 求编号x对应的字符。例:chr(65)='A' chr(97)='a' chr(48)='0' x为非负整数
ord(x) 求字符x对应的编号。例:ord(‘A')=65 ord(‘a')=97 另外:ord(false)=0 ord(true)=1 x为字符或数字或布尔量
sqr(x) 求x的平方。例:sqr(4)=16 x为整数
sqrt(x) 求x的正根。例:sqrt(16)=4 (ps:负数是不能进行运算的,如果需要就要先取绝对值:sqrt(-4)是错的,应该为sqrt(abs(-4))结果为实数
round(x) 求x的四舍五入。例:round(4.5)=5 x实数
trunc(x) 求x的整数部分。例:trunc(5.6)=5 结果是integer型 x为实数
int(x) 求x的整数部分。例:int(5.6)=5.0 结果是real型 x为实数
frac (x) 求x的小数部分。例:frac(5.6)=0.6 x为实数
pred(x) 求x的前导。例:pred(‘b')='a' pred(5)=4 pred(true)=false x为字符或数字或布尔量
succ(x) 求x的后继。例:succ(‘b')='c' succ(5)=6 succ(false)=true x为字符或数字或布尔量
odd(x) 判断x是否为奇数。如果是值为true,反之值为false。例:odd(2)=false odd(5)=true x为整数
power(a,n) 求a的n次方。例:power(2,3)=8 {只有在开启math库时才可以使用}a,n为整数,但是不能求高精度数
random(n) 取0~n-1之间的随机数(不能取到n) 。n为整数
max(x,y):返回x和y中的较大值。x,y整数
min(x,y):返回x和y中的较小值。x,y整数
三 常规总结
1、查询一个变量的类型,直接在命令行敲击变量名即可。
2、将一个变量用到多个函数上,只需将变量声明成全局变量即可。
3、输入矩阵时要以[ ]为标志,矩阵元素在其内部;矩阵同行元素用“,”行与行之间用“;”分割;矩阵大小可以不预先定义;举证元素可以为运算表达式。
总结本课的主要内容:1.基本数据结构2.基本的流程;3.常用的功能函数;一、matlab基本操作1.变量名的命名规则:区分大小写,…
Matlab总结一、Matlab运行libsvm运行环境1、使用的libsvm-mat-2.89-32、Mathworks.Mat…
?size(a)或[m,n]=size(a)diag(a)?一些常用的特殊矩阵单位矩阵:eye(m,n);eye(m)零矩阵:ze…
总结一、小知识点MATLAB全称Matrixlaboratory变量who:变量whos:数据类型矩阵的生成和提取、取代、运算+-…
班级:学号:姓名:Matlab学习综述MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和强…
班级:学号:姓名:Matlab学习综述MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和强…
总结一、小知识点MATLAB全称Matrixlaboratory变量who:变量whos:数据类型矩阵的生成和提取、取代、运算+-…
?size(a)或[m,n]=size(a)diag(a)?一些常用的特殊矩阵单位矩阵:eye(m,n);eye(m)零矩阵:ze…
Matlab总结一、Matlab运行libsvm运行环境1、使用的libsvm-mat-2.89-32、Mathworks.Mat…
总结本课的主要内容:1.基本数据结构2.基本的流程;3.常用的功能函数;一、matlab基本操作1.变量名的命名规则:区分大小写,…
选修一梭伦改革1、背景:前7世纪,雅典贵族政治确立。贵族政治上垄断国家政权、占据首席执政官、把持长老会议,使得公民大会沦为名义上的…