Matlab:对find()函数的混淆

时间:2016-02-14 00:23:59

标签: arrays matlab

find()函数返回元素非零的索引。我尝试了不同的数组大小,但都给出了错误:

In an assignment  A(I) = B, the number of elements in B and I must be the same. 

我很困惑,因为当数组大小相同时,我仍然会收到此错误。

这只是为了解出了什么问题: LEt,

示例1:相同的数组大小

A = [20;21;3;45;5;19;1;8;2;1];
B = A;
 for i =1:length(B)
pos(i) = find(A == B(i));
end

我应该有pos = [1,2,3,4,5,6,7,8,9,10]。但是循环在i = 7之后退出,给出了'pos = [1,2,3,4,5,6]'

示例2:不同的数组大小

 C = [20;1;10;3];

 for i =1:length(C)
    pos(i) = find(A == C(i));
    end

有人可以解释我理解中的错误,并说明如何使用相同和不同的A和B数组长度?谢谢。

1 个答案:

答案 0 :(得分:1)

问题是find(A == 1)返回两个索引,包括7和10,并且不能存储在pos(i)中,因为pos(i)只能保存一个数字。

不幸的是,通用错误消息恰好与矩阵的两个矩阵具有相同的名称,这可能会让您在看到它几次之前感到困惑。