首页 > 编程知识 正文

离散时间信号处理第二版答案,用延迟算子表示差分运算

时间:2023-05-03 09:14:30 阅读:117040 作者:3304

计算信号处理第二式——2序列时间延迟的文章列表信号处理第二式——计算两个序列的时间延迟1、计算算法2、代码实现1、非周期信号计算时间延迟2、周期信号计算时间延迟

提示:以下是本文的正文内容。

另一方面,计算算法计算两个序列的时间延迟通常使用快速线性相关算法和循环相关算法这两种算法

假设两个有限长度序列x(n )、n=0,N-1和y ) n )、n=0,1…,M- 1,相关长度L=N M-1

(1)快速线性相关算法的实现

为了防止循环卷积的折叠,首先将x(n )和x(n ) )零填充到l以上(保证l为2的幂,便于基底2的FFT运算),得到x1 )和y1 ) n )。

用FFT算法计算的x1(n )和y2 ) n的DFT被变换为x1 ) k )和y2 ) k ) :

利用循环卷积定理得到线性相关

适当修改结果得到相关序列rxy(n )

)2)循环相关算法

与快速线性算法相比,通过设置延迟序列和取更少的点,大大降低了计算速度,提高了效率。

二、代码实现1 .非周期信号计算时间延迟示例:从delaydatal. txt文件中读取人的2通道数据,分别取x和y。 那些是

之间的延迟量为54个样本,以xcorr、快速线性相关和循环相关的方式计算延迟量,并且将结果进行比较。

代码如下。

%例:从delaydatal. txt文件中读取人的2通道数据,分别设置为x和y。 它们%之间的延迟量为54个样本,用xcorr、快速线性相关、循环相关计算延迟量,并比较了它们的结果。 xx=load(Delaydata1.txt ); %加载数据x=xx (:1 ); %读取第1列的数据y=xx (:2 ); 读取第%2列中的数据[Rxy,lags]=xcorr(y,x ); 用xcorr函数计算线性相关n=length(x ); %获取数据长度%线性相关x=快速计算x=FFT(x,2*N ); y=FFT(y,2*N ); sxy=y.*conj(x; 得到%互相关sxy=IFFTshift(IFFT ) sxy ); 调整%ifft序列顺序cxy=sxy ) 2:结束; %只有2*N-1分subplot 211; line(lags,Rxy,' linewidth ',4 ); Holdonplot(lags、Cxy、' k ' ); AXIS([-100100,-50 200]; legend (得到xcorr函数,)得到快速线性相关); xlabel (采样点); ylabel (相关函数振幅); title(2 (求两种方法线性相关的延迟量); %循环相关xc=FFT(x; YC=FFT(y; sxy=YC.*conj(xc ); scxy=IFFTshift(IFFT ) scxy ); 调整%ifft序列顺序ccxy=scxy (2:结束); 只取N-1个点的lagc=-N/2 1:N/2-1; subplot 212; plot(lagc、Ccxy、' k ' ); AXIS([-100100,-50 200]; xlabel (采样点); ylabel (相关函数振幅); 从title (“求循环相关方法延迟量”)结果图可以看出,在快速线性相关和循环相关算法中,求的延迟量都是54个样本点。 延迟数据1是振动信号,周期性不强,可以使用循环相关算法。

2 .周期信号计算时间延迟示例:从delaydata3. txt文件读取两个信道的数据,分别设置为x和y

在矩形脉冲中,两个序列之间的延迟量为14个样本,用xcorr线性相关和循环相关计算延迟量,并

比较那些结果。 (delaydata3.txt是周期信号)

代码如下。

%示例:从delaydata3. txt文件读取两个通道的数据,分别设置为x和y。 它们的%是矩形脉冲,两个序列之间的延迟量为14个样本,通过xcorr线性相关和循环相关计算延迟量,并将结果与%进行比较。 (delaydata3.txt是周期信号) xx=load ) (delaydata3.txt ); %加载文件x=xx (:1 ); 获取第%1列的数据y=xx (:2 ); 获取第%2列的数据n=length(x ); %长度获取plot(0:n-1,x,' k '; Holdonplot(0:n-1,y ); Axis ([ 030,02 ]; 发光(x )、y ); xlabel (采样点); 振幅; title(y比x的延迟量); xc=FFT(x; YC=FFT(y; %循环相关sxy=YC.*conj(xc ); sxy=IFFTshift(IFFT ) sxy ); cxy=sxy ) 2:end; lagc=-N/2 1:N/2-1; %绘图figure、subplot 311; plot(lagc、Cxy、' k ' ); title(x (与x和y循环相关); xlabel (样本点) a图); ylabel (相关函数振幅); %线性相关[Rxy,lags]=xcorr(y,x ); %制图subplot 312; plot(lags,Rxy,' k ' ); title(x与y的快速线性相关); xlabel (样本点) b图); ylabel (相关函数振幅); subplot 313; plot(lags,Rxy,' k ' ); title(x与y的快速线性相关); xlabel (样本点) c图); ylabel (相关函数振幅); axis([050,-1000 1000]; 其结果如下图所示。 在Figure1中,可以看到y比x晚14个样本。 Figure2中使用的a图是循环相关的方法,无法找到最大峰值来决定延迟量。 另一方面,b图使用高速线性相关算法可以发现,c图是b图的方法版。 你会发现在14点得到了最大的峰值。

因此,在信号是周期性信号的情况下,不能使用循环相关算法来确定两个序列的延迟量。

以这个博客结束。 喜欢的话请一键连呼3次。 不定期更新信号处理、单片机、传感器博客,谢谢大家的支持!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。