我输入'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乘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};
返回正确的变量,所以我知道这很有效。当我迭代它时,它不起作用。我该如何解决这个问题?
答案 0 :(得分: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}
答案 1 :(得分:0)
我找到了答案:
p(i) = code128B{find(ismember(code128B,phrase(i)))-109,3};
p(i) = str2num(code128B{find(ismember(code128B,phrase(i)))-109,3});