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

📄 cir_conv.m

📁 经典《信号与系统》教程的matlab例程,对深入理解信号与系统相关概念有很大帮助
💻 M
字号:
% 本程序用来计算并演示两个长度均为N的序列之间的循环卷积。
% 程序名:Cir_conv.m
clear;

N=input('Type in the length N=:');
a=[1 2 0 1];b=[2 2 1 1];
n0=-3*N;
n1=3*N-1;
n=n0:n1;
p=input('请选择输入的序列形式:1—闭式形式,2—开式形式');
if p==1,
    x=input('请输入第一个序列的闭式表示式:');
    h=input('请输入第二个序列的闭式表示式:');
else
    x=input('请输入第一个序列的开式表示式:');
    h=input('请输入第二个序列的开式表示式:');
end
c=0*n;
RN=u(n)-u(n-N);
if p==1
    x=x([3*N+1:4*N]);
    h=h([3*N+1:4*N]);
else
end
l=length(n);
v=zeros(1,N);
x=[v,v,v,x,v,v];
hs=[h,h,h,h,h,h];



d=ones(1,length(n));
subplot(411)
stem(n,x,'.');axis([-N,2*N-1,0,max(x)]);title('序列g(n)')
subplot(412)
stem(n,hs,'.');axis([-N,2*N-1,0,max(hs)]);text(-N+.51,0.8*max(hs),'h(n)的周期延拓序列');
s=0;

hs=fliplr(hs);
for i=0:N-1;
    for j=0:N;
        for p=1:l-1;
            if s==0;
               w=hs(l);hs(l-p+1)=hs(l-p);
           end
           hs(1)=w;
        end
    end
    s=1;
    subplot(413)
    stem(n,hs.*RN,'r.');axis([-N,2*N-1,0,max(hs)]);text(-N+.51,0.8*max(hs),'h(n)的循环反褶与移位');
    a=x.*RN;
    b=hs.*RN;
    e=a.*b;
    g=e*d';
    c(i+3*N+1)=g;
    subplot(414)
    stem(n,c,'.')
    axis([-N,2*N-1,0,max(c)]);text(-N+.51,0.8*max(c),'循环卷积y(n)');
    pause
    for p=1:l-1;
        w=hs(l);hs(l-p+1)=hs(l-p);
    end
    hs(1)=w;
end
disp('循环卷积的样本值:')
yn=c([3*N+1:4*N])





⌨️ 快捷键说明

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