关于如何用matlab做傅里叶变换的问题
发布网友
发布时间:2022-05-06 04:37
我来回答
共3个回答
热心网友
时间:2022-06-28 17:58
不需要拟合
:
设抽样频率为Fs(Hz),信号点数为N,信号序列为x。
x=imread(‘’)
f
=
fftshift(fft(x));
w
=
linspace(-Fs/2,
Fs/2,
N);%频率坐标,单位Hz
plot(w,abs(f));
title('信号的频谱');
xlabel('频率(Hz)');
热心网友
时间:2022-06-28 17:58
不需要解析式,你学过数字信号处理的话看看matlab的fft函数就应该会用
fs=10000;%采样频率
N=1000;
%采样点数
n=0:N-1;
t=n/fs;
y=sin(2*pi*t)+0.1*sin(4*pi*t)+0.01*sin(8*pi*t);
%给定信号
figure(1);
subplot(211);
plot(t,x);%绘出信号的时域波形
xlabel('时间/t');
ylabel('幅值');
title('信号的时域波形');
grid
on;
y=fft(x,N);%进行fft变换
m=abs(y(1:N/2))*2/N;%求信号的真实幅值
f=n*fs/N;
%进行对应的频率转换
subplot(212);
stem(f(1:N/2),m(1:N/2));%绘出频谱图
xlabel('频率/Hz');
ylabel('幅值');
title('信号频谱图');
grid
on;
热心网友
时间:2022-06-28 17:59
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)
参数可以根据具体信号的特点进行设定。