0

这是我的代码

%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

这是否意味着我无法创建字符串元胞数组..?

4

2 回答 2

1

您可以创建一个字符串元胞数组。

您的代码中的问题是它BarcodeRow不是一个正整数。您的输入BarcodeNumberValues可能是问题所在。确保它不包含十进制值。

于 2013-09-15T04:23:07.343 回答
1

正如 chappjc 指出的那样,问题可能在于BarcodeNumberValues包含非整数或非正值。

以下代码尝试转换BarcodeNumberValues为整数并在它不起作用时中止。

[BarcodeRow, ~, ~, nextindex] = sscanf(BarcodeNumberValues{1,roll}, '%d', 1) + 1;
assert(nextindex == length(BarcodeNumberValues{1,roll}) + 1);
于 2013-09-15T06:46:17.377 回答