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

📄 experiment2.m

📁 数字信号处理(西安电子科技大学出版社)实验二的所有程序
💻 M
字号:
b=input('请选择信号: 1:x1;2:x2;3:x3;4:x4;5:x5;6:x6;7:x7;8:x8;0:退出\n');
i=0;
close all;
while(b)
%%输入xb(n)
    if b==6
        N=input('请选择FFT变换区间长度N:16或者32或者64\n');
        fs=64;
        n=0:N-1;
        x=cos(8*pi*n/fs)+cos(16*pi*n/fs)+cos(20*pi*n/fs);
    else
        N=input('请选择FFT变换区间长度N:8或者16\n');
        if b==1
            x=[1 1 1 1 0 0 0 0];
        else if b==2
                x=[1 2 3 4 4 3 2 1];
            else if b==3
                    x=[4 3 2 1 1 2 3 4];
                else if b==4
                        n=0:N-1;
                        x=cos(0.25*pi*n);
                    else if b==5
                            n=0:N-1;
                            x=sin(pi*n/8);
                        else if b==7
                                n=0:N-1;
                                x=cos(n*pi/4)+sin(n*pi/8);
                            else if b==8
                                    n=0:N-1;
                                    x=cos(n*pi/4)+j*sin(n*pi/8);
                                end
                            end 
                        end
                    end
                end
            end
        end
    end
    %%To Calculate FFT
    f=fft(x,N);
    i=i+1;
    figure(i);
    printf(x,abs(f),abs(N),abs(b));
    if N==16
        if b==7
            k=conj(f);%conj是求共轭
            X4=(f+k)/2;
            figure(i+2)
            subplot(2,2,1);
            stem(abs(X4),'.');
            xlabel('k');
            ylabel('|X4(k)|');
            title('恢复后的X4(k)');
            X5=(f-k)/2;
            subplot(2,2,3);
            stem(abs(X5),'.');
            xlabel('k');
            ylabel('|X5(k)|');
            title('恢复后的X5(k)');
        end
        if b==8
            k(1)=conj(f(1));
            for m=2:N
                k(m)=conj(f(N-m+2));
            end
            fe=(f+k)/2; %求X8(k)的共轭对称分量
            fo=(f-k)/2; %求X8(k)的共轭反对称分量
            xr=ifft(fe,N);
            b=4;
            figure(i+1)
            printf(xr,abs(fe),abs(N),abs(b));
            xi=ifft(fo,N)/j;%xi=x5(n)
            b=5;
            figure(i+2)
            printf(xi,abs(fo),abs(N),abs(b));
        end
    end
    b=input('请选择信号: 1:x1;2:x2;3:x3;4:x4;5:x5;6:x6;7:x7;8:x8;0:退出\n');
end

⌨️ 快捷键说明

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