我在MATLAB中有一个单元格数组,表现得非常奇怪。我有104个单行向量,我已经存储为单元格,范围从80到344个元素。结果,我有一个104 x 344的单元阵列,称为z。每个元素都包含一个数字值。我试图找到这个数组中所有单元格的位置,这些单元格介于某些值之间,例如524和528.为此,我使用了以下内容。
index = find([z{:}] >= 524 & [zp{:}] <= 528 )
这会返回一个索引位置列表,这些位置最初似乎是合理的,但奇怪的是,当我评估它们时,我会得到一些非常奇怪的行为;我试试
z{index}
它在这些位置吐出了许多值 - 但并非所有值都在524和528之间;有些显着高于或低于这些值。其他人仍然返回[],0 x 0数组。也许我正在使用这个棘手的单元阵列找错了,但这种行为肯定不是我的预期。有任何想法吗?
答案 0 :(得分:2)
如果z包含空值,则不能在z上使用从数组[z {:}]计算的索引。当您执行[z {:}]时,将删除空值。您需要将[z {:}]保存在另一个变量中并将其索引到其中。
y = [z{:}];
index = find(y >= 524 & y <= 528 )
y(index)