| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 942 人关注过本帖
标题:大家帮我看看这个程序,基础东西
只看楼主 加入收藏
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
快速回复:大家帮我看看这个程序,基础东西
数据加载中...
 
   



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

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