BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #7286同步于 2010/6/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

线形卷积和循环卷积(多年都没整清楚)

dooon
2010/6/7镜像同步2 回复
这是我以前做通原仿真实验的时候写的程序(当时通过了验收), 最近看数字信号处理的循环卷积和线性卷积的区别,总觉得有点 不对劲,希望数字信号处理学得好的朋友解答一下我的疑惑。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N=2^14; %采样点数 L=32; %每码元的采样点数 M=N/L; %码元数 Rb=2; %码速率是2Mb/s Ts=1/Rb; %码元间隔 dt=Ts/L; %时域采样间隔 df=1/(N*dt); %频域采样间隔 T=N*dt; %截短时间 Bs=N*df/2; %系统带宽 Na=4; %示波器扫描宽度为4个码元 alpha1=0.05; %取3组不同的滚降系数 %划分时域频域区间 t=linspace(-T/2,T/2,N); f=linspace(-Bs,Bs,N); %升余弦滚降(alpha=0.05) g11=sin(pi*t/Ts)./(pi*t/Ts); g21=cos(alpha1*pi*t/Ts)./(1-(2*alpha1*t/Ts).^2); g1=g11.*g21; G1=t2f(g1); %产生码元序列 a=sign(randn(1,M)); %产生冲激序列 imp=zeros(1,N); imp(L/2:L:N)=a/dt; S=t2f(imp).*G1; %升余弦信号的傅氏变换 s=f2t(S); %升余弦信号的时域波形 其中t2f为 function X=t2f(x) global dt df N t f T %X=t2f(x) %x为时域的取样值矢量 %X为x的傅氏变换 %X与x长度相同,并为2的整幂。 %本函数需要一个全局变量dt(时域取样间隔) H=fft(x); X=[H(N/2+1:N),H(1:N/2)]*dt; end f2t为 function x=f2t(X) global dt df t f T N %x=f2t(X) %x为时域的取样值矢量 %X为x的傅氏变换 %X与x长度相同并为2的整幂 %本函数需要一个全局变量dt(时域取样间隔) X=[X(N/2+1:N),X(1:N/2)]; x=ifft(X)/dt; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 从程序中可以看到t2f实际上是作dft,那么下面这一行 S=t2f(imp).*G1; %升余弦信号的傅氏变换 S实际上应该是imp和g1循环卷积结果的dft不是么? s=f2t(S); %升余弦信号的时域波形 那么s为imp和g1的循环卷积结果,但是我觉得信号通过 升余弦滤波器应该是一个线形卷积才对啊,而且这里并不 满足线形卷积和循环卷积相等的条件,怎么回事呢? 越想越晕,不明白。
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
loveway2008机器人#1 · 2010/6/9
我也不明明白
palemaster机器人#2 · 2010/6/9
我也不明明明白