Я хочу создать переменную, которая находит шаблон (допустим, [1 1]) в разных строках матрицы (A). Конечно, в каждой строке нет одинакового количества вхождений этой строки.Создание переменной с неравными строками
A = [ 0 0 0 1 1
1 1 1 0 0
0 1 0 1 1
1 1 1 0 0
0 1 0 0 1
1 0 1 1 1
0 1 0 1 0
1 1 1 0 1];
Я мог бы сделать:
for i = 1:n
var(i,:) = strfind(A(i,:),[1 1]);
end
, но тогда обе стороны уравнения не будут равны.
ERROR: ??? Subscripted assignment dimension mismatch.
Я стараюсь предопределять. Я создаю матрицу с тем, что, по моему мнению, будет максимальным количеством вхождений этой строки в каждой строке матрицы A (скажем, 50).
for i = 1:n
var(i, :) = NaN(1,50)
end
За этим следует предыдущий бит кода, и это тоже не хорошо.
Я также попытался:
for i = 1:n
var(i,1:numel(strfind(A(i,:),[1 1])) = strfind(A(i,:),[1 1])
end
Error: The expression to the left of the equals sign is not a valid target for an assignment.
Как я должен идти об этом?
Результат, который я ожидаю, представляет собой матрицу var (i, :), которая дает мне положение в матрице, где происходят каждый из этих шаблонов. Он работает нормально только для одной строки.
Например:
var(1,:) = [1 2 5 8 10 22 48]
var(2,:) = [2 3 4 7 34 45 NaN]
var(3,:) = [4 5 21 32 33 NaN]
Спасибо!
Что вы имеете в виду под «не хорошо»? Какая ошибка? Кроме того, какой выход вы ожидаете? Можете ли вы дать образец 'A' и образец' var'? –
Также я не уверен, что это намеренно, но если ваша матрица является матрицей целых чисел, '[1 1]' не является строкой; это массив чисел. «Строки» в matlab ссылаются на текст, поэтому 'strfind' не будет работать в этой ситуации. –
в вашем цикле for вы имеете 'strfind' дважды с левой стороны. –