Пытаясь создать массив ячеек из отдельных строковых значений, индексы получения индекса должны быть либо положительными целыми числами, либо логическими.

Вот мой код

%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);
Другие вопросы по тегам