标题:大家帮我看看这个程序,基础东西
只看楼主
weihanchen
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-11
 问题点数:0 回复次数:1 
大家帮我看看这个程序,基础东西
%circonvt.m

function y=circonvt(x1,x2,N)

%在x1 和x2:(时域)之间的N 点圆周卷积

%-----------------------------------------

%[y]=circonvt(x1,x2,N)

%y=包含圆周卷积的输出序列

%x1=长度N1<=N 的输入序列

%x2=长度N2<=N 的输入序列

%N=循环缓冲器的大小

%方法y(n)=sum(x1(m)*x2((n-m) mod N))

%检查x1的长度:

if length(x1)>N

    error('N必须>=x1的长度')

end

%检查x2的长度:

if length(x2)>N

    error('N必须>=x2的长度')

end



x1=[x1 zeros(1,N-length(x1))];

x2=[x2 zeros(1,N-length(x2))];

m=[0:1:N-1];

x2=x2(mod(-m,N)+1);                  % 这行什么意思??赐教

H=zeros(N,N);

for n=1:1:N

     H(n,:)=cirshftt(x2,n-1,N);   % 这行呢? 赐教

end

y=x1*H';



其中包含的子函数:

%cirshftt.m

function y=cirshftt(x,m,N)

%长度为N 的x序列:(时域)作m个样本的循环移位

%---------------------------------------

%[y]=cirshftt(x,m,N)

%y=包含循环移位的输出序列

%x=长度<=N的输入序列

%m=移位样本数

%N=循环缓冲器长度

%方法: y(n)=x((n-m) mod N)

%检查x的长度

if length(x)>N

     error('N必须>=x的长度')

end

x=[x zeros(1,N-length(x))];

n=[0:1:N-1];

n=mod(n-m,N);   %。。。。。。。。。。。

y=x(n+1);    % 为什么加1了呢 ?加1 不又移了一位



%mod.m

function m=mod(n,N)

%计算m=(n mod N)下标

m=rem(n,N);

m=m+N;

m=rem(m,N);
搜索更多相关主题的帖子: 基础 
2008-10-11 20:31
shiyuwtog
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-12
得分:0 
程序y运行的没错误。
2008-10-12 23:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-237672-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.312386 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved