matlab - matlab中不同长度的字符串/数组的比较和移位

标签 matlab comparison sliding-window

我有一个具有不同长度或大小的字符串或数组的列表。我想使用最短的字符串,并通过将最短的字符串窗口一一移动来进行比较。

假设我想做加法,我有 [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

上长度为 3 的窗口
>> 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/

相关文章:

matlab - 元胞数组初始化

Matlab - 如何在条形图中使用字符串而不是数字

C:比较两个长整数(很奇怪)

string - MATLAB:字符串元胞数组之间的单词匹配

python - 使用 Python 从 wav 文件创建振幅列表

python - 有效地在 python 中处理大型 .txt 文件

matlab - 将 gabor 过滤器应用于图像

c - C程序从矩阵读取一列数据

ruby - 如何对两个数组进行逐元素比较?

java - 在 DataFlow 中获取上一个窗口数据