【问题标题】:Difference of elements of an array with all element of another array in MATLABMATLAB中一个数组的元素与另一个数组的所有元素的差异
【发布时间】:2022-01-14 18:19:02
【问题描述】:

假设我有两个不同大小的数组。说A=[10;12;13;17;18]; 和B=[20;22;23;17;26;30;32];。输出 C 如下:

   [10, 8,  7,  3,  2;
    12, 10, 9,  5,  4;
    13, 11, 10, 6,  5;
    7,  5,  4,  0,  -1;
    16, 14, 13, 9,  8;
    20, 18, 17, 13, 12;
    22, 20, 19, 15, 14].

C 的每一列都是通过 B 的所有元素与 A 的特定元素之间的差来获得的。例如,C 的第一列是通过 B 的所有元素与 A 的第一个元素的差来获得的,即, 10. 如果 A 的维度是 (m-by-1) 而 B 是 (n-by-1),那么 C 的维度是 (n-by-m)。

【问题讨论】:

  • 只需将一个改为行向量并减去:C = B - A'
  • A和B的尺寸不同。
  • James Tursa 的评论是正确的选择。只要确保使用.' 而不是',以防您有复杂的值。此外,对于旧的 Matlab 版本,您需要 bsxfun(@minus, B, A.')

标签: arrays matlab multidimensional-array vectorization element


【解决方案1】:

您可以使用此代码块。

clear;
clc;

A=[10;12;13;17;18];
B=[20;22;23;17;26;30;32];

m = length(A);
n = length(B);

C = zeros(n,m);

for i=1:m
    for j=1:n
        C(j,i) = B(j) - A(i);
    end
end

disp(C)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多