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

📄 zxb_shiyan_1.m

📁 一些matlab底下的小函数
💻 M
字号:
function lab1
goon=1;
xb=impseq(0,0,1);
ha=stepseq(1,1,10);
hb=impseq(0,0,3)+2.5*impseq(1,0,3)+2.5*impseq(2,0,3)+impseq(3,0,3);
while(goon==1)
    step=input('请选择你要进行的试验的阶段:\n 1(时域采样序列分析),2(系统和响应分析),3(卷积定理的验证),0(退出)\n');
    while step<0&step>3
       step=input('请选择你要进行的试验的阶段:\n 1(时域采样序列分析),2(系统和响应分析),3(卷积定理的验证),0(退出)\n');
    end
    switch step
        case 0,
            goon=0;
        case 1,           
            close all;
            A=444.128;
            a=222.128;
            w=222.128;
            fs=1000;
            xa=signalline(A,a,w,fs);
            str1='xa(n)';
            str2='|Xa(ejw)|';
            [Xa,l]=DFT(xa,str1,str2);
            fs=500;
            xa=signalline(A,a,w,fs);
            [Xa,l]=DFT(xa,str1,str2);
            fs=200;
            xa=signalline(A,a,w,fs);
            [Xa,l]=DFT(xa,str1,str2);
        case 2,
            close all;
            str1='xb(n)';
            str2='|Xb(ejw)|';
            [Xb,l]=DFT(xb,str1,str2);
            str1='hb(n)';
            str2='|Hb(ejw)|';
            [Hb,l]=DFT(hb,str1,str2);
            y=conv(xb,hb);
            str1='y(n)=xb(n)*hb(n)';
            str2='|Y(ejw)|';
            [Y,l]=DFT(y,str1,str2);
            xc=ha;
            y=conv(xc,ha);
            str1='y(n)=ha(n)*ha(n)';
            str2='|Y(ejw)|';
            [Y,l]=DFT(y,str1,str2);
            xc=stepseq(1,1,5);
            y=conv(xc,ha);
            str1='y(n)=ha(n)*xc(n)';
            str2='|Y(ejw)|';
            [Y,l]=DFT(y,str1,str2);
        case 3,
            close all;
            A=1;
            a=0.4;
            w=2.0734;
            fs=1;
            xa=signalline(A,a,w,fs);
            str1='xa(n)';
            str2='|Xa(ejw)|';
            [Xa,l]=DFT(xa,str1,str2);
            y=conv(xa,hb);
            str1='y(n)=xa(n)*ha(n)';
            str2='|Y(ejw)|';
            [Y,l]=DFT(y,str1,str2);
            Hb=DFT(hb,'','');
            close;
            close;
            Y=abs(Xa.*Hb);
            figure;
            plot(l/pi,Y);
            xlabel('w/pi');
            ylabel('|Y(ejw)|');
            title('Y(ejw)=Hb(ejw)Xa(ejw)');
    end
end

%------------子函数
function xa=signalline(A,a,w,fs)
%采样信号产生程序,对连续信号进行采样
n=0:49;
xa=A*exp((-a)*n/fs).*sin(w*n/fs);

function [x,n]=impseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];

function [x,n]=stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];

function [c,l]=DFT(x,str1,str2)
N=length(x);
n=0:N-1;
k=-200:200;
l=(pi/100)*k;
c=x*(exp(-j*pi/100)).^(n'*k);
X=abs(c);
figure
stem(n,x);
xlabel('n');
ylabel(str1);
title('信号原形');
figure
plot(l/pi,X);
xlabel('w/pi');
ylabel(str2);
title('信号的傅氏变换');

⌨️ 快捷键说明

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