l*****e 发帖数: 594 | 1 周期的方波用矩形窗截取一个周期,作傅立叶变换,观察到的基频比方波的基频要低。
是应该这样吗? |
e***y 发帖数: 4307 | |
l*****e 发帖数: 594 | 3 8倍频采样。正负cycle各4个sample
【在 e***y 的大作中提到】 : 确定你的sampling rate够了?
|
l*****e 发帖数: 594 | 4 把matlab code帖出来了
f0 = 1e6; % Base frequency
osr = 4; % Over sampling Rate
fs = 2*osr*f0; % sampling frequency
ts = 1/fs;
ncyc = 1; % number of cycles
ts_input = [ones(osr,1);-1*ones(osr,1)];
ts_input = repmat(ts_input,[ncyc 1]);
xt = (0:length(ts_input)-1)*ts;
xt_us = xt*1e6;
figure,
plot(ts_input,'*-')
nfft = 4096;
spc = fftshift(fft(ts_input,nfft));
fs_mhz = fs*1e-6;
fx = (-nfft/2:nfft/2-1)/nfft*fs_mhz;
spc_db = 20*log10(abs(spc));
spc_norm = spc_db-max(spc_db);
figure,
plot(fx,spc_norm)
xlim([0 5])
ylim([-50 0])
grid on,
【在 l*****e 的大作中提到】 : 8倍频采样。正负cycle各4个sample
|
e***y 发帖数: 4307 | 5 原来是matlab,我看了一下你只有一个周期,你试试把周期数改大些,例如50,fft的
峰值就是1MHz了。
【在 l*****e 的大作中提到】 : 把matlab code帖出来了 : f0 = 1e6; % Base frequency : osr = 4; % Over sampling Rate : fs = 2*osr*f0; % sampling frequency : ts = 1/fs; : ncyc = 1; % number of cycles : ts_input = [ones(osr,1);-1*ones(osr,1)]; : ts_input = repmat(ts_input,[ncyc 1]); : xt = (0:length(ts_input)-1)*ts; : xt_us = xt*1e6;
|
l*****e 发帖数: 594 | 6 我只有一个cycle的波形,之前也发现改周期数可以逼近。这个是为啥?窗函数的频谱
泄漏吗
【在 e***y 的大作中提到】 : 原来是matlab,我看了一下你只有一个周期,你试试把周期数改大些,例如50,fft的 : 峰值就是1MHz了。
|
e***y 发帖数: 4307 | 7 fft的frequency resolution是fs/n,n是number of samples,样本数越大resolution
越好。注意这个n不是nfft
spectral leakage也有些影响
【在 l*****e 的大作中提到】 : 我只有一个cycle的波形,之前也发现改周期数可以逼近。这个是为啥?窗函数的频谱 : 泄漏吗
|
w*******8 发帖数: 139 | 8 就是简单的频谱泄漏,或者说窗函数的分辨率和信号的分辨率太近了.跟FFT的分辨率没
啥关系 |
l*****e 发帖数: 594 | 9 感谢上面两位提醒,想明白了。一个cycle的方波频谱是周期方波频谱(奇次谐波脉冲
序列)和矩形窗频谱(sinc)的卷积(窗长对应方波一个周期,所以sinc主辦款对应方
波基频,附件图1是频谱上shift的过程,2是加起来之后的频谱)。
我的matlab code 对应一个周期方波信号zero pad后和更长的矩形窗乘积的频谱,频域
上对应一个cycle方波信号以更长周期重复的频谱与这个长矩形窗频谱的卷积。
图上可以看到,1个cycle的方波对应周期方波的奇次谐波序列失真很严重。本质上是如
ls所说的频谱泄漏。或者说频谱分辨率也有道理,因为信号时长增加的话,sinc的主辦
变窄对应频谱采样分辨率提高,得到的频谱自然就失真率小了。
【在 l*****e 的大作中提到】 : 周期的方波用矩形窗截取一个周期,作傅立叶变换,观察到的基频比方波的基频要低。 : 是应该这样吗?
|
l*****e 发帖数: 594 | 10 温故而知新啊,差点被最fundamental的问题打败
【在 l*****e 的大作中提到】 : 感谢上面两位提醒,想明白了。一个cycle的方波频谱是周期方波频谱(奇次谐波脉冲 : 序列)和矩形窗频谱(sinc)的卷积(窗长对应方波一个周期,所以sinc主辦款对应方 : 波基频,附件图1是频谱上shift的过程,2是加起来之后的频谱)。 : 我的matlab code 对应一个周期方波信号zero pad后和更长的矩形窗乘积的频谱,频域 : 上对应一个cycle方波信号以更长周期重复的频谱与这个长矩形窗频谱的卷积。 : 图上可以看到,1个cycle的方波对应周期方波的奇次谐波序列失真很严重。本质上是如 : ls所说的频谱泄漏。或者说频谱分辨率也有道理,因为信号时长增加的话,sinc的主辦 : 变窄对应频谱采样分辨率提高,得到的频谱自然就失真率小了。
|