声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1776|回复: 3

[编程技巧] 关于互相关函数的问题

[复制链接]
发表于 2009-7-6 09:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
相邻的两条信号进行互相关求时延,若有时延则进行平移对齐。相关代码如下:
clear all;clc;close all;
x=[1:9;1:9;4:9 0 0 0;0 0 0 4:9]';
[m,n]=size(x);
Y(:,1)=x(:,1);
for j=2:4              
    Cc(:,j)=xcorr(x(:,j),Y(:,j-1));                            %信号1为Y(:,j-1),信号2为x(:,j),相邻信号求互相关函数
    [y_max(1,j),t_max(1,j)]=max(Cc(:,j));                      %找出Cc的最大值及对应的t_max
    l1=length(x(:,j));
    l2=length(Y(:,j-1));
    if(l1<l2)
        certain_point=l2;
    else
        certain_point=l1;
    end
    sample_delay(1,j)=t_max(1,j)-certain_point;                 %计算与中心点相差的样点
    if sample_delay(1,j)<0
       Y(1:length(x(:,j))+abs(sample_delay(1,j)),j)=immove(x(:,j),0,-sample_delay(1,j));              %信号2以信号1(即前一信号)作为基准进行平移      
    else if sample_delay(1,j)>0
            Y(1:length(x(:,j))-sample_delay(1,j),j)=immove(x(:,j),0,-sample_delay(1,j));                  %immove是进行平移的一个函数
        else Y(1:length(x(:,j)),j)=x(:,j);
        end
    end
end

   j=3时,Y=
                    1     1     0
                    2     2     0
                    3     3     0
                    4     4     4
                    5     5     5
                    6     6     6
                    7     7     7
                    8     8     8
                    9     9     9
                    0     0     0
                    0     0     0
                    0     0     0
   Cc是17×3的矩阵
   而当j=4时,是Y(:,3)和x(:,4)进行互相关,Cc(:,4)的长度照道理应该是23,但之前是17,会出现如下错误
   ??? Subscripted assignment dimension mismatch.
   请问应如何修改?思索了很久,不会,请各位大侠帮忙。

点评

注意检查矩阵的长度  发表于 2014-12-18 20:42
回复
分享到:

使用道具 举报

发表于 2013-9-19 15:34 | 显示全部楼层
:-(我也遇到了这样的问题
发表于 2014-12-18 17:23 | 显示全部楼层
呵呵,等待高手来解答啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-1 12:23 , Processed in 0.083296 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表