Matlab 里的 是如何计算的?补零 是否必要?
Matlab 里的 t 事如何计算的?与 Dft 的结果是否相同?补零 t 是否必要?
下面通过实验分析,结果如下:
在 matlab 中不论数据长度是否是 2 的整次幂,dft 和 t 的结果都是相同的。
Dft 的标准角频率是以 2π 为周期的,若以 π 为周期,其效果等同于原始信号补一半零,
再做 dft 变换,不会提高频率分辨率。
Matlab 中的 变换,对于数据长度 2 的整次幂当然是基 2 的 。但是对于长度非 2 的
整次幂数据,其过程是多种混合基的混合运算,其结果当然与 d 相同。绝对不是补零
到 2 的整次幂再进行傅里叶变换,那样会漏掉特征(如图中曲线 7)。但是对于补零
原始数据的整倍数后,再抽样不会繁盛畸变,与直接 t 变换结果一样(如图中曲线
2、3、4)
将原始数据补零后再抽取需要点数的做法不可取,不仅不能增加频率分辨率,还会引
起较大畸变,就算是补原始数据点的整数倍零,其结果也是只与不补零的效果相同。
下图为 matlab 仿真图,原始数据 400 点
曲线 1:d 计算时旋转因子周期定为 π(标准以 2π 为周期)
曲线 2:t 补一半零达到 2 倍原数据长度 的 t 变换,向上偏移 10
曲线 3: 2 倍原数据长度的 t 变换,向上偏移 20。
曲线 4:dft 补一半零达到 2 倍原数据长度 的 dft 变换,向上偏移 30
曲线 5:标准 t 曲线;
曲线 6:标准 dft 曲线;
曲线 7: 原始数据 400 点补零到 512 点,傅里叶变换后再抽取 400 点的曲线。
function xk=dft(xn) %dft
N = length(xn);
n = 0:(N-1);
WN=exp(-j*2*pi*n/N); %旋转因子