signal processing matlab-2(fft级数)
Posted yinsawfilter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了signal processing matlab-2(fft级数)相关的知识,希望对你有一定的参考价值。
本文主要来讨论下信号频率分析的傅里叶级数,傅里叶是是每个做信号处理必须了解的一个处理技巧,他能带我们从不同的角度来看待信号的特性,可以说是十分的很好了。。
下面我就给出傅里叶级数的主要表达式:
关于傅里叶级数的详细推导和物理意义可参考如下的链接:
https://www.bilibili.com/video/BV1wb411K7Kp/?spm_id_from=333.788.videocard.0
https://zhuanlan.zhihu.com/p/19763358
我们在matlab中进行分析求解,按照傅里叶的表达式进行带入:
按照视频里面给出的弹簧阻尼系统,我们求解的是一个矩形波,最大值为10,最小值为3,周期为20,
matlab代码见下:
function F=fft_hust
syms x;
T=20;
n=10; %谐波的阶数
t=0:0.01:80;
%如果创建-1,+1的方波直接调用square即可
%50是50%占空比
f=max(7*square(pi*0.1*t,50),3);%创建方波最大值是1,最小值是0
plot(t,f);
grid on;
hold on;
% axis([0 4*pi -0.5 1.5]);
A0=5;%可根据函数直接算出
F=0;
Fx=0;
for i=1:n
As=int(14*cos(2*pi*i*x/T)/T,x,0,T/2)+int(6*cos(2*pi*i*x/T)/T,x,T/2,T);%傅里叶系数an
Bs=int(14*sin(2*pi*i*x/T)/T,x,0,T/2)+int(6*sin(2*pi*i*x/T)/T,x,T/2,T);%傅里叶系数bn
F=F+As*cos(2*pi*i*t/T)+Bs*sin(2*pi*i*t/T);%求傅里叶级数展开
Fx=Fx+As*cos(2*pi*i*x/T)+Bs*sin(2*pi*i*x/T);
end
F=F+A0;
Fx=Fx+A0;
Fx
%figure(2)
plot(t,F)
代码运行起来可能会比较蛮,可以改下参数来调整。。
另外:说明下square函数,,具体的说法可以这样来理解:
周期性矩形脉冲信号 MATLAB语言调用形式: y=square(t,duty) 产生一个周期为2 π,幅值为±1的周期性方波, duty表示占空比(duty cycle)占空比是指脉冲宽度τ与周期T的比值(τ/T) t=-0.0625:0.0001:0.0625; y=square(2*pi*30*t,75); plot(t,y),grid on axis([-0.1,0.1,-1.5,1.5])
以上是关于signal processing matlab-2(fft级数)的主要内容,如果未能解决你的问题,请参考以下文章
signal processing--matlab--6(综合运算)
signal processing--matlab--6(综合运算)
signal processing matlab-2(fft级数)
为啥 multiprocessing.Process 没有 send_signal 方法?