У меня есть список строк или массивов различной длины или размера. Я хочу использовать кратчайшую строку и сравнивать с другими строками, переставляя кратчайшее строковое окно один за другим, чтобы сделать сравнение.Смещение и добавление более двух массивов различной длины - MATLAB
Скажем, я хочу сделать дополнение, у меня есть [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]
пример выше для двух массивов, которые я нашел можно решить с помощью hankel
функции.
a = [2 1 3];
b = [4 5 7 8 9];
idx = hankel(1:numel(a), numel(a):numel(b));
c = bsxfun(@plus, b(idx.'), a);
и результат:
c =
6 6 10 % [2 1 3] + [4 5 7]
7 8 11 % [2 1 3] + [5 7 8]
9 9 12 % [2 1 3] + [7 8 9]
, но теперь, я хочу, чтобы выполнить для всех из них, и есть много сочетания. позволяет сказать, что массивы A
, B
, C
, D
и E
, поэтому возможно добавление может быть A+B
, A+C
, A+D
, A+E
, B+C
, B+D
, B+E
, C+D
, C+E
, D+E
.
, например:
A=[2 1 3];B=[4 5 7 8 9];C=[6 9];D=[3 6 4 2 1 1];E=[4 6 9]
for A+B
6 6 10
7 8 11
9 9 12
for A+C
8 10
7 12
for A+D
5 7 7
8 5 5
6 3 4
4 2 4
... and the rest
Как я могу это сделать с помощью MATLAB? Большое спасибо
Если 'a = [2 1 3]; b = [4 5 7 8 9]; ', что такое' A', 'B',' C', 'D' и' E'? – Divakar
Что вы пробовали? Теперь вы просто подытоживаете ответ на свой предыдущий вопрос. – Nick
@ Ник, последний вопрос содержал только два массива, теперь я хочу расширить его до более чем двух массивов. thx – Cina