При назначении A(I) = B количество элементов в B и I должно быть одинаковым
Я ввожу 'test' как строку, фразу, и это дает мне следующую ошибку:
>> CreateBarcodePattern('test')
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in CreateBarcodePattern (line 5)
p(i) = code128B{find(ismember(code128B,phrase(i)))-109,3};
Функция CreateBarcodePattern выглядит следующим образом:
function [p] = CreateBarcodePattern(phrase)
load('code128B');
p = [];
for i = 1:length(phrase)
p(i) = code128B{find(ismember(code128B,phrase(i)))-109,3};
end
Я ставлю точку останова в строке 5 и в точке i = 1, p = [] (и пока пустой массив), code128B = <ячейка 108x3> (ячейка размером 108 на 3, полная строк), а фраза = 'test ". Самая следующая строка дает мне ошибку выше. Я пытался сделать:
load('code128B.mat')
p = [];
phrase = 'test';
p(1) = find(ismember(code128B,phrase(1)))-109;
p(1) = code128B{p(1),3}
но в последней строке ошибка:
In an assignment A(I) = B, the number of elements in B
and I must be the same.
снова дается. Прямо перед ошибкой, p = 84
что я и ожидал, это связано с предыдущей строкой, p(1) = fi...
Линия:
code128B{find(ismember(code128B,'t'))-109,3};
Возвращает правильную переменную, поэтому я знаю, что это много работает. Это просто не работает, когда я повторяю это. Как я могу это исправить?
2 ответа
Может быть, линия
find(ismember(code128B,phrase(1)))
возвращает более 1 индекса. p(1) хочет ровно один элемент.
Если вы просто хотите первый индекс, сделайте что-то вроде этого:
Idx = find(ismember(code128B,phrase(1)));
Idx = sort(Idx); % Am just assuming you need to sort!
p(1) = Idx(1) - 109;
p(1) = code128B{p(1),3}
Я нашел ответ:
p(i) = code128B{find(ismember(code128B,phrase(i)))-109,3};
p(i) = str2num(code128B{find(ismember(code128B,phrase(i)))-109,3});