0

我输入'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 cell>(一个 108 x 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};

返回正确的变量,所以我知道这很有效。当我迭代它时它只是不起作用。我怎样才能解决这个问题?

4

2 回答 2

0

我找到了答案:

p(i) = code128B{find(ismember(code128B,phrase(i)))-109,3};
p(i) = str2num(code128B{find(ismember(code128B,phrase(i)))-109,3});
于 2013-08-30T01:09:59.630 回答
0

也许这条线

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}
于 2013-08-28T08:31:07.140 回答