⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addwindowdft.m

📁 加窗离散傅立叶变换
💻 M
字号:
% AddWindowDFT


clear;
disp('用DFT对离散信号进行谱分析');
disp('通过选用不同的加窗函数来抑制信号截断造成的频谱泄漏');
Repeat = 1;

disp('输入信号x(n),n为下标');
n = input('n=');
L = length(n);
x = input('x=');
    
disp(sprintf('输入截取信号的长度N(即窗长),N<%d',L));
N = input('N=');
    
x1 = x(1:N);
k = 0:L-1;
Xk = dft(x,L);
Xk1 = dft(x1,L);
    
figure;
subplot(2,1,1),stem(n,x),title('原始信号');
subplot(2,1,2),stem(k,abs(Xk)),title('原始信号频谱');
    
figure;
subplot(2,1,1),stem(n,[x1,zeros(1,L-N)]),title('不加窗的截断信号');
subplot(2,1,2),stem(k,abs(Xk1)),title('不加窗的信号频谱'); 
    
while Repeat == 1   
    disp('选择窗函数');
    disp('1:boxcar');
    disp('2:triang');
    disp('3:hanning');
    disp('4:hamming');
    disp('5:blackman');
    Ans = input('Choose=');    
    
    switch Ans
        case 1
            w = (boxcar(N))';
            x2 = x1.*w;
            Xk2 = dft(x2,L);
            
            figure;
            subplot(2,1,1),stem(n,[x2,zeros(1,L-N)]),title('用boxcar截断信号');
            subplot(2,1,2),stem(k,abs(Xk2)),title('加窗后的信号频谱');
            
        case 2
            w = (triang(N))';
            x2 = x1.*w;
            Xk2 = dft(x2,L);
            
            figure;
            subplot(2,1,1),stem(n,[x2,zeros(1,L-N)]),title('用triang截断信号');
            subplot(2,1,2),stem(k,abs(Xk2)),title('加窗后的信号频谱');
            
        case 3
            w = (hanning(N))';
            x2 = x1.*w;
            Xk2 = dft(x2,L);
            
            figure;
            subplot(2,1,1),stem(n,[x2,zeros(1,L-N)]),title('用hanning截断信号');
            subplot(2,1,2),stem(k,abs(Xk2)),title('加窗后的信号频谱');
            
        case 4
            w = (hamming(N))';
            x2 = x1.*w;
            Xk2 = dft(x2,L);
            
            figure;
            subplot(2,1,1),stem(n,[x2,zeros(1,L-N)]),title('用hamming截断信号');
            subplot(2,1,2),stem(k,abs(Xk2)),title('加窗后的信号频谱');
            
        case 5
            w = (blackman(N))';
            x2 = x1.*w;
            Xk2 = dft(x2,L);
            
            figure;
            subplot(2,1,1),stem(n,[x2,zeros(1,L-N)]),title('用blackman截断信号');
            subplot(2,1,2),stem(k,abs(Xk2)),title('加窗后的信号频谱');
            %otherwise
            %disp('请选择窗函数');
    end      
    Repeat = input('Still want to continue,Yes=1 No=0? Ans=');
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -