A. 离散傅里叶变换DFT 和FFT 输入的参数是什么,计算出来的又是什么
1,简单的用的话,输入参数为一系列的数据点,例如在MATLAB中,先定义
t=0:0.01:1;
y=sin(t);
dft(y);
即输入参数其实是100个数据点值,局弯要求稍微高点的,可以用dft(y,n),n代表采样频率,郑好即采样点数,桐丛闷按照采样定理,采样频率须大于2倍的样本的频率,一般去5倍,根据离散傅里叶的原理,n一般取2的整数立方,可以取256,512,1024等。即便你不取这些数,在系统内部计算时,它也是按照这些数进行采样计算的。
2.傅里叶变换就是频谱分析,输出的是对应不同频率该函数的幅值是多少。
B. matlab中函数fft的输入量与输出量各是什么
fs=1000;%对连续信号进行量化处理,即对原始信号进行采样,这里是采样率,单位Hz
ts=1/fs;%采样间隔
t=0:ts:1.3;
x=sin(2*pi*50*t)+sin(2*pi*300*t);
%y=@(t) sin(2*pi*50*t)+sin(2*pi*300*t);
f=x+3.5*randn(1,length(t));
subplot(411);plot(t,f);
ylabel('幅值');xlabel('时间');title('原始信号');
nfft= 2^nextpow2(length(f));%找出大于y的个数的最大的2的指数值
y=fft(f,nfft);%对f信号进行铅源DFT,得到频率的幅值分布
p=y.*conj(y)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。
ff=fs*(0:nfft/2-1)/nfft;% F F T 变换后对应的频率的序列
subplot(412);plot(ff,p(1:nfft/2));
ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
%------论坛上看到的求FFT的方法
subplot(413);plot(ff,abs(y(1:nfft/2)));%(用这个,先取点数后求模)
ylabel('幅值');xlabel('频率');title('单边幅频谱');
%------matlab例子的求FFT的方法
subplot(414);plot(ff,2*abs(y(1:nfft/2))/length(f));%(用闹谈这个,先取点数后求模)
ylabel('幅值');xlabel('频率'液激碰);title('单边幅频谱');
%振幅的大小与所用DFT采样点数(nfft)有关,采用不同的DFT采样点数对同一信号,振幅是有不同的表现值
C. FFT输入输出长度的问题。在线急等~
FFT输入长度应当是 2 的 整数次方。不满足时,消肆液后面添0,凑足到最近的 2 的 整数次方拿物。
例如,1000 个数,后面添0,凑足到1024 -- 最近的 2 的 整数次方。
输出 个数 是 1024 (复数)。
matlab y=fft(x,n) 实际上是 DFT, 输入数,多于 n, 只用 n 个,不足n个,添0到 n 个。输出 为 n 个 (复数)。matlab 的 y=fft(x) 按帮助文件,它等同 y=fft(x,n),只是 n = size(x)。
至于matlab 如何用 FFT技术,但输出数据个数不是 2 的雹宽 整数次方个数。是不是做了一次插值
不清楚。