矩阵元素之间的差异求和

发布于 2024-11-05 21:30:44 字数 910 浏览 3 评论 0原文

我正在 MATLAB 中构建一个函数。作为其中的一部分,我必须计算两个矩阵中元素之间的差异并将它们相加。

让我解释一下考虑两个矩阵,

1 2 3 4 5 6
13 14 15 16 17 18

以及

7 8 9 10 11 12
19 20 21 22 23 24

第一行中的计算 - 一次仅考虑两个矩阵中的四个元素(零表示填充):

    (1-8)+(2-9)+(3-10)+(4-11): This replaces 1 in initial matrix.
    (2-9)+(3-10)+(4-11)+(5-12): This replaces 2 in initial matrix.
    (3-10)+(4-11)+(5-12)+(6-0): This replaces 3 in initial matrix.
    (4-11)+(5-12)+(6-0)+(0-0): This replaces 4 in initial matrix. And so on

我无法决定如何在 MATLAB 中对此进行编码。我该怎么做?

我使用以下等式。

Equation

这里 i 的范围是从 1n( h)n(h),距离较远的对的数量。这取决于所选的滞后距离。因此,如果我选择1 的滞后距离,n(h) 将是元素数量 - 1

当我使用 7 X 7 窗口时,考虑到中心值,n(h) = 4 - 1 = 3 就是这种情况。

I am in the process of building a function in MATLAB. As a part of it I have to calculate differences between elements in two matrices and sum them up.

Let me explain considering two matrices,

1 2 3 4 5 6
13 14 15 16 17 18

and

7 8 9 10 11 12
19 20 21 22 23 24

The calculations in the first row - only four elements in both matrices are considered at once (zero indicates padding):

    (1-8)+(2-9)+(3-10)+(4-11): This replaces 1 in initial matrix.
    (2-9)+(3-10)+(4-11)+(5-12): This replaces 2 in initial matrix.
    (3-10)+(4-11)+(5-12)+(6-0): This replaces 3 in initial matrix.
    (4-11)+(5-12)+(6-0)+(0-0): This replaces 4 in initial matrix. And so on

I am unable to decide how to code this in MATLAB. How do I do it?

I use the following equation.

Equation

Here i ranges from 1 to n(h), n(h), the number of distant pairs. It depends on the lag distance chosen. So if I choose a lag distance of 1, n(h) will be the number of elements - 1.

When I use a 7 X 7 window, considering the central value, n(h) = 4 - 1 = 3 which is the case here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

衣神在巴黎 2024-11-12 21:30:44

您可能想查看 circshfit() 函数:

a = [1 2 3 4; 9 10 11 12];
b = [5 6 7 8; 12 14 15 16];

for k = 1:3
    b = circshift(b, [0 -1]);
    b(:, end) = 0;

    diff = sum(a - b, 2)
end

You may want to look at the circshfit() function:

a = [1 2 3 4; 9 10 11 12];
b = [5 6 7 8; 12 14 15 16];

for k = 1:3
    b = circshift(b, [0 -1]);
    b(:, end) = 0;

    diff = sum(a - b, 2)
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文