
如果你只对[-05,05]之间的信号进行采样,那么你采的将会是常数1,这样做出的FFT应该是一个delta函数,也就是一个冲击,所以你应该采包括外边的值才能够反映出信号的特性。
这样结果没有任何问题,问题是你采样的值太少了,换句话说就是你采样的信号反映不出这是个门函数的特性来。
matlab里边是可以利用单边函数表示门函数的。你可以跑一下下边的程序,看一下门函数:
fx=heaviside(x+05)-heaviside(x-05);
ezplot(fx,[-1,1]);
而且matlab里边还有对符号表达式做傅里叶变换的函数fourier(),用法如下:
FX=fourier(fx);
ezplot(FX,[-30,30]);
title('fourier transformation of fx')
而如果你非想用fft做,就必须加大采样点数,尤其是门之外的部分,才能够完整的描述信号。
函数(function)表示每个输入值对应唯一输出值的一种对应关系。这种关系使一个集合里的每一个元素对应到另一个(可能相同的)集合里的唯一元素。函数f中对应输入值的输出值x的标准符号为f(x)。包含某个函数所有的输入值的集合被称作这个函数的定义域,包含所有的输出值的集合被称作值域。若先定义映射的概念,可以简单定义函数为,定义在非空数集之间的映射称为函数。
傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。
也就是t1为v1,t2为v2,,,,,,,,,,,,,,
[a1 a2 a3 an]
这个t=1/f
f=5000hz
程序为
x=0:1/f:n1/f;
y=[a1 a2 a3an]
T=[1/f 21/f 31/f n1/f]
V=yT
plot(V,T)
S=VT
plot(S,T)
fft的返回值,是虚数。虚数的相角就是这个频率的波的相角,虚数的模就是这个频率的震幅。
但是“这个频率”,“震幅”都与你做fft时候采用的采样频率和数据个数有关。要是想还原信号,最好还是用ifft比较简单
首先,计算机处理的信号均为离散化的信号。
对于连续模拟信号的表达式,只要给定离散的时间参数,其得到的就是离散信号
例如
sin(2pi100t) 这表示频率为100Hz的正弦信号
那么,令t = 1:01:100;
y = sin(2pi100t);
得到的就是离散的正弦信号y
matlab自带了短时傅里叶变换的分析函数,也即spectrogram函数。
其使用方式有两种
1 [S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
2 [S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
x---输入信号的向量;Window---窗函数;Noverlap---各段之间重叠的采样点数;Nfft---计算离散傅里叶变换的点数;Fs---采样频率Hz;F---在输入变量中使用F频率向量。
对应题主的问题
假设语音信号保存在wave变量中,那么,对其做短时傅里叶变换的函数语句为
[S,F,T,P]=spectrogram(wave,window,noverlap,nfft,fs)
参数可以根据具体信号的特点进行设定。
以上就是关于怎样用matlab实现门函数的傅里叶变换G(jw),。全部的内容,包括:怎样用matlab实现门函数的傅里叶变换G(jw),。、Matlab处理一列离散数据的积分,以及傅里叶变换、matlab 的fft 傅立叶变换 怎么叠加等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)