我有一个具有不同长度或大小的字符串或数组的列表。我想使用最短的字符串,并通过将最短的字符串窗口一一移动来进行比较。
假设我想做加法,我有 [2 1 3]
作为我的最短列表,并且想要对 [4 5 7 8 9]
1st addition: [2 1 3] + [4 5 7]
2nd addition: [2 1 3] + [5 7 8]
3rd addition: [2 1 3] + [7 8 9]
如何使用 matlab 做到这一点?
谢谢
最佳答案
假设 A
是较长的向量,B
是较短的向量。
您可以使用hankel
函数创建一个矩阵,其中每行都是 A
>> hankel(A(1:3),A(3:end))
ans =
4 5 7
5 7 8
7 8 9
现在您只需调用 bsxfun
对每一行执行所需的操作:
L=numel(B);
bsxfun(@plus, B, hankel(A(1:L),A(L:end)))
结果
ans =
6 6 10
7 8 11
9 9 12
其中行包含所需的输出向量。
请注意,您可以将 @plus
更改为 @minus
或任何其他用户定义的函数。
关于matlab - matlab中不同长度的字符串/数组的比较和移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26354656/