c 中的 Matlab xcorr 函数
Matlabs xcorr function in c
我正在使用函数
in = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
lag = 8;
out = xcorr(in, lag)
它产生输出:
out = [175,000000000000, 238,000000000000, 308, 384, 465, 550, 638, 728, 819, 728, 638, 550, 465, 384, 308, 238, 175,000000000000];
我无法从 Matlabs 文档中了解如何获取这些值。有什么公式可以用吗?
在一般的 matlab 文档中,将公式放在名为 More about 的章节中,查看此章节以了解 matlab 实现了哪些公式。
这是 link 到 更多关于 章节的 xcorr 函数。
https://it.mathworks.com/help/signal/ref/xcorr.html#bubr0h6
为了更加清晰,请查看此代码:
in = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
lag = 8;
N = length(in);
correlation = zeros(2*lag,1);
for m = -8:8
correlation(m+8+1) = sum(in.*[zeros(1,abs(m)) in(1:N-abs(m))]);
end
其中 sum(in.*[zeros(1,abs(m)) in(1:N-abs(m))]);
计算 in
与其移位版本之间的乘积之和。要计算 in 的移位版本,只需用零填充前 m 个元素,N-m 元素在 (1:N-m) 中。我使用 abs 是因为滞后 m 为负或正。
尝试代码并为 m 的各种值打印 [zeros(1,abs(m)) in(1:N-abs(m))]
以更好地理解矢量的移位版本的外观。
作业:为什么我们使用 [zeros(1,abs(m)) in(1:N-abs(m))]
而不是 [zeros(1,abs(m)) in(1:N)]
?
P.s 在这种情况下,您正在计算自相关,因此 y 向量是 x。
有关该理论的更多详细信息,请查看 参考资料 章节以查看 matlab 参考了哪些书籍。
我正在使用函数
in = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
lag = 8;
out = xcorr(in, lag)
它产生输出:
out = [175,000000000000, 238,000000000000, 308, 384, 465, 550, 638, 728, 819, 728, 638, 550, 465, 384, 308, 238, 175,000000000000];
我无法从 Matlabs 文档中了解如何获取这些值。有什么公式可以用吗?
在一般的 matlab 文档中,将公式放在名为 More about 的章节中,查看此章节以了解 matlab 实现了哪些公式。 这是 link 到 更多关于 章节的 xcorr 函数。 https://it.mathworks.com/help/signal/ref/xcorr.html#bubr0h6
为了更加清晰,请查看此代码:
in = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
lag = 8;
N = length(in);
correlation = zeros(2*lag,1);
for m = -8:8
correlation(m+8+1) = sum(in.*[zeros(1,abs(m)) in(1:N-abs(m))]);
end
其中 sum(in.*[zeros(1,abs(m)) in(1:N-abs(m))]);
计算 in
与其移位版本之间的乘积之和。要计算 in 的移位版本,只需用零填充前 m 个元素,N-m 元素在 (1:N-m) 中。我使用 abs 是因为滞后 m 为负或正。
尝试代码并为 m 的各种值打印 [zeros(1,abs(m)) in(1:N-abs(m))]
以更好地理解矢量的移位版本的外观。
作业:为什么我们使用 [zeros(1,abs(m)) in(1:N-abs(m))]
而不是 [zeros(1,abs(m)) in(1:N)]
?
P.s 在这种情况下,您正在计算自相关,因此 y 向量是 x。
有关该理论的更多详细信息,请查看 参考资料 章节以查看 matlab 参考了哪些书籍。