matlab中用specgram做完短时傅里叶变换如何用程序实现返回纵坐标的值

matlab中用specgram做完短时傅里叶变换如何用程序实现返回纵坐标的值,第1张

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中如何实现矩形函数的傅里叶变换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10078240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存