很多时候,读者们为了提高fft函数的计算速度,都会将数据个数处理成2的整数次幂个。例如如下代码:
fs = 100;
%时域抽样间隔
ts = 1/fs;
t = [-1:ts:1];
x1 = normpdf(t, 0, 0.07);
x2 = unifpdf(t,-0.2,0.2);
%绘制时域波形
subplot(311)
plot(t,x1);
title('正态分布密度函数时域图像');
subplot(312)
plot(t,x2);
title('矩形分布密度函数时域图像');
N = 512; %所做的FFT点数,2的次幂能实现快速算法
X1 = fft(x1,N);%求得x(n)的DFT结果
X2 = fft(x2,N);%求得x(n)的DFT结果
X1 = X1/fs;
X2 = X2/fs;
x=ifft(X1.*X2);
subplot(313)
plot(t,x);
title('正态分布与矩形分布联合密度函数时域图像');
但是将数据个数处理成2的整数次幂个,对后续的绘图增加了难度,因为t变量的个数并不是等于N,导致报错。那该如何处理这个问题呢?是直接将t变量的值个数转变为512?如下代码所示:
clc; clear all; close all;
fs = 100;
ts = 1/fs;%时域抽样间隔
t = [-1:ts:1];
x1 = normpdf(t, 0, 0.07);
x2 = unifpdf(t,-0.2,0.2);
%绘制时域波形
subplot(311)
plot(t,x1);
title('正态分布密度函数时域图像');
subplot(312)
plot(t,x2);
title('矩形分布密度函数时