【发布时间】: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