matlab自带了短时傅里叶变换的分析函数,老版本的matlab是specgram函数,新的改成了spectrogram函数,虽然一说到时频分析,都会说到小波分析,小波分析要比短时傅里叶要好云云,但在分析信号的瞬时频谱时,短时傅里叶还是有它的用武之地的。前一阵也看了一些有关小波分析的matlab实现,发现帮助中使用小波也多是除噪、压缩,都说小波是时频显微镜,它的用武之地还是在于查看高频在哪一级分解中,进而可以有效滤除一些信号,比如除噪,所以短时傅里叶变换查看瞬时频率正好互补一下。时频分析还认识的不深,一个阶段的想法而已。
另外,之前对matlab的扫频函数chirp做过总结,见>
首先产生矩形脉冲信号,可以使用rectpuls(t,w)函数产生一个幅值为1,以t=0为中心对称,半宽度为w/2的矩形脉冲
然后傅里叶变换是用fft()命令的。如果要得到频谱的话还要再处理一下,具体就不多说了,给个程序样例:
t=-20:20;
w=10;
y=rectpuls(t,w);%矩形脉冲信号
yy=fft(y);
n=size(y);
n=n(2);
fy=abs(fft(y))/n2;%频谱
subplot(2,1,1)
plot(y);
subplot(2,1,2)
plot(fy);
挺粗糙的,最后得到的两个图分别是方波脉冲和频谱图。。
顺带一提:
1)三角波是tripuls(t,w);
2)矩形波也可以通过ones()和zeros生成一个信号矩阵
3)具体的函数使用和参数规则请参阅help“command”
4)其实这些用simulink做,里面都有现成的模块。这样倒是很简洁,但也不容易看懂
I0=zeros(256,256);
I0(120:130,100:156)=1;
subplot(2,3,1),imshow(I0),title('原始图像')
subplot(2,2,2),imshow(log(1+abs(fft2(I0)))),title('直接进行fft2')
I1=I0;
F1=fft(I1,[],1);%按列进行傅里叶变换
subplot(2,2,3),imshow(log(1+abs(F1))),title('先按列进行')
F2=fft(F1,[],2);%按行进行傅里叶变换
subplot(2,2,4),imshow(log(1+abs(F2))),title('后按行进行')
这里t已经是符号变量,就不用对它赋值(第二行)。我写了个简单的代码:<pre t="code"
l="cpp">clear all;
close all;
clc;
%带有阶跃函数的Laplace变换
syms t s
f=exp(-t)heaviside(t-2) %heaviside 阶跃函数的表示
F=laplace(f,t,s)运行的程序截图如下:f =heaviside(t - 2)/exp(t) F =1/(exp(2)exp(2s)(s + 1))
定义
f(t)是t的周期函数,如果t满足狄里赫莱条件:在一个以2T为周期内f(X)连续或只有有限个第一类间断点,附f(x)单调或可划分成有限个单调区间,则F(x)以2T为周期的傅里叶级数收敛,和函数S(x)也是以2T为周期的周期函数,且在这些间断点上,函数是有限值;在一个周期内具有有限个极值点;绝对可积。则有下图①式成立。称为积分运算f(t)的傅立叶变换。
以上就是关于matlab中用specgram做完短时傅里叶变换如何用程序实现返回纵坐标的值全部的内容,包括:matlab中用specgram做完短时傅里叶变换如何用程序实现返回纵坐标的值、matlab编程序:写出对x(n),y(n)分别做64点离散傅里叶变化的程序代码,谢谢!!、MATLAB中如何实现矩形函数的傅里叶变换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)