具有重叠滑动的自定义自相关 window
Custom autocorrelation with overlapping sliding window
我正在尝试根据下图中的信息在 matlab 中制作自定义自相关函数:
该函数有效,但我收到一个错误,指出索引超出了矩阵维度,从数学上讲它是正确的,但在编程中我是否遗漏了什么?这是我的代码:
close all; clear all; clc;
[x,fs]=audioread('c1.wav');
N=length(x); %// length of signal
n1=128; %// length of window
win_num=floor(N/n1); %// number of windows
m=1:n1;
for l=1:n1/2:win_num %// 50% overlapping - 64 samples for a 128 window
for n=1:N-m
cmax(n)=max(sum(x(n+m)*conj(x(n))));
end
end
提前致谢。
我假设当您执行 for n=1:N-m
时您想要执行 for n=1:N-max(m)
(或 for n=N-m(end)
)。
如果你做第一个 N-m
returns 一个数组,而不是单个值,因为 m
是一个数组!
我正在尝试根据下图中的信息在 matlab 中制作自定义自相关函数:
该函数有效,但我收到一个错误,指出索引超出了矩阵维度,从数学上讲它是正确的,但在编程中我是否遗漏了什么?这是我的代码:
close all; clear all; clc;
[x,fs]=audioread('c1.wav');
N=length(x); %// length of signal
n1=128; %// length of window
win_num=floor(N/n1); %// number of windows
m=1:n1;
for l=1:n1/2:win_num %// 50% overlapping - 64 samples for a 128 window
for n=1:N-m
cmax(n)=max(sum(x(n+m)*conj(x(n))));
end
end
提前致谢。
我假设当您执行 for n=1:N-m
时您想要执行 for n=1:N-max(m)
(或 for n=N-m(end)
)。
如果你做第一个 N-m
returns 一个数组,而不是单个值,因为 m
是一个数组!