Be the first to comment

矩形窗的频谱泄露_了凡春秋

数值发出信号处置中,波谱走漏和Windows时条件性陈述档案是否真的,这件事曾经看重过好几次了。,无不弄微暗,在这场合又一次,想法弄清楚。把大字标题问题留给主观,列举如下

发出信号y=2*cos(20*pi*t)+5*cos(100*pi*t),采样周而复始为,窗户的宽度是时期。,排好队伍不相同矩形窗的波谱。

顺序列举如下:

%% 窗应变量
function windowfcn
%%
clc
close all

%%
ts = 0.005;
figure

%% 的窗应变量
simtime =
[t, out, f, Yfft] = sys_window(simtime, TS)

subplot(321)
说谎(T, out, ”-o”)
xlim(【0, simtime])
大字标题(宽采样发出信号)
subplot(322)
干(F, Yfft)
xlim(【0, 100])
大字标题(广谱)

%% 的窗应变量
simtime =
[t, out, f, Yfft] = sys_window(simtime, TS)

subplot(323)
说谎(T, out, ”-o”)
xlim(【0, simtime])
大字标题(宽采样发出信号)
subplot(324)
干(F, Yfft)
xlim(【0, 100])
大字标题(广谱)

%% 的窗应变量
simtime =
[t, out, f, Yfft] = sys_window(simtime, TS)

subplot(325)
说谎(T, out, ”-o”)
xlim(【0, simtime])
大字标题(宽采样发出信号)
subplot(326)
干(F, Yfft)
xlim(【0, 100])
大字标题(广谱)
end

%%
function [t, out, f, Yfft] = sys_window(simtime,TS)
fs = 1/ts;
[t, ] = sys(simtime, TS)
[f, Yfft] = DFT(出, FS)
end

%% 获取体系采样档案
function [t, ] = sys(simtime, TS)
t = 0:simtime TS TS:
out = 2*cos(20*pi*t) + 5*cos(100*pi*t);
end

%%
计算DFT轮流,赢得单边波谱,信号普遍的,可重用性,除此之外,帮忙说话中肯信号是替代的重用模式。
function [f, Yfft] = DFT(发出信号, FS)
L = 一节(发出信号)
Y = FFT(发出信号)/ L

% 单边波谱
df = fs/L;
f = 0:DF:fs / 2
if 一节(f) > ceil(L/2)
   f =
f(1:end-1);
end
Yfft = 2*abs(Y(1:一节(f)));

% 双边波谱
% df = 1/simtime;
% f = 0:DF
% Yfft = abs(Y)
% if 一节(f) > 一节(y)
   
f = f(1:end-1);
% end

Yfft = Yfft /
sum(Yfft);
end

招致列举如下:

windowfcn

从下面的招致可以看出:

第一任一某一窗口,鉴于总数周而复始的切断,因而缺席打破点。,因而缺席波谱走漏。,从采样档案重构原始档案;末尾两个窗口,非全周而复始切断,招致波谱走漏,除此之外,窗口宽度极大于发出信号周而复始。,主阀用夹钳夹,小的旁瓣,生产能力集合,析像系数放。

波谱的编码平面图列举如下

%% 计算DFT轮流,赢得的波谱

function [f, Yfft] = DFT(发出信号, fs,
半)

L = 一节(发出信号)

Y = FFT(发出信号)/ L

if half == 1

  
 % 单边波谱

  
 df = fs/L;

  
 if REM(L,2) == 1 % 剩余的采样点

  
     f = 0:df:(L
– 1)/2*df;

  
     Yfft =
2*abs(Y(1:一节(f)-1));

  
     Yfft =
[Yfft abs(Y(一节(f)))];

  
 else % 即若采样点

  
     f =
0:DF(L/2) – 1)*东方

  
     Yfft =
2*abs(Y(1:一节(f)));

  
 end

else

  
 % 双边波谱

  
 df = fs/L;

  
 f = 0:df:(L – 1)*东方

  
 Yfft = abs(Y)

end

Yfft = Yfft / sum(Yfft);

end

上述的办法是应用FFT应变量计算的。,假设式是澄清应用的,列举如下

% 计算团圆傅里叶轮流

function [FDFT,
f] = CalcDFT(x, ts, 半)

if nargin
<= 2

  
 half = 1;

end

fs =
1/ts;

N =
一节(x)

F =
SubCalcDFT(x);

if half == 1 %
单边波谱

    df
= fs/N;

    if
REM(n, 2) == 1 % 剩余的采样点

    
   f = 0:df:(N –
1)/2*df;

    
   FDFT =
2*abs(F(1:一节(f)-1));

    
   FDFT = [FDFT
abs(F(一节(f)))];

  
 else % 即若采样点

    
   f = 0:DF(n/2) –
1)*东方

    
   FDFT =
2*abs(F(1:一节(f)));

  
 end

else %
双边波谱

    df
= fs/N;

    f
= 0:df:(N – 1)*东方

  
 FDFT = 防关闭延迟体系(f)

end

end

function F =
SubCalcDFT(x)

N =
一节(x)

F =
零(大量(x)

for k =
0:1

    n
= 0:1;

  
 WNk = exp(-1j*2*pi/N*k*n);

  
 F(k+1) = x*WNk”/N;

end

end
这两个应变量的招致是相等地的。。

使承受压力中,请等一会儿。


RSS feed for comments on this post · TrackBack URI

Leave a reply