Пытаясь создать массив ячеек из отдельных строковых значений, индексы получения индекса должны быть либо положительными целыми числами, либо логическими.
Вот мой код
%This function takes an array of 128Bvalue numbers and returns the equivalent binary
%values in a string phrase
function [PhrasePattern] = GetPatternForValuesFinal(BarcodeNumberValues)
load code128B.mat;
Pattern = {};
%The correspomnding binary sequence for each barcode value is
%identified and fills the cell array
for roll = 1:length(BarcodeNumberValues);
BarcodeRow = str2double(BarcodeNumberValues{1,roll}) + 1;
Pattern{1,roll} = code128B{BarcodeRow,3};
end
%The individual patterns are then converted into a single string
PhrasePattern = strcat(Pattern{1,1:length(Pattern)});
end
Назначение функции состоит в том, чтобы использовать массив чисел и преобразовать их в массив ячеек с соответствующими значениями двоичных строк, а затем объединить эти строки. Ошибка исходит из строки 11 столбца 26,
Pattern{1,roll} = code128B{BarcodeRow,3}; subscript indices must be either positive integers or logicals
Значит ли это, что я не могу создать массив ячеек из строк?
2 ответа
Вы можете создать массив строк из строк.
Проблема в вашем коде в том, что BarcodeRow
не является положительным целым числом. Ваш вклад BarcodeNumberValues
скорее всего проблема. Убедитесь, что он не содержит десятичных значений.
Как указал chappjc, проблема, вероятно, в том, что BarcodeNumberValues
содержит нецелые или неположительные значения.
Следующий код пытается конвертировать BarcodeNumberValues
в целое число и прерывается, если он не работает.
[BarcodeRow, ~, ~, nextindex] = sscanf(BarcodeNumberValues{1,roll}, '%d', 1) + 1;
assert(nextindex == length(BarcodeNumberValues{1,roll}) + 1);