ismember()没有返回足够的元素

时间:2017-01-21 15:48:52

标签: matlab

请考虑以下示例代码:

spacing_Pin  = transpose(-27:0.001:2); 
Phi_intrp3   = interp1(P_in3,Phi_out_deg3,spacing_Pin,'spline');

size(P_in3) = size(Phi_out_deg3) = 40   1

P_in1st = P_in3 -0.76;
thetah_1st = Phi_intrp3(ismember(spacing_Pin,P_in1st));

我认为thetah_1st现在应该有40个元素。但事实证明,它只有20个。这必须是,因为P_in1st只能在spacing_Pin中找到20次。我知道,你没有给P_in3,但它只有点后最多2位数。应P_in1stmin(P_in3) = -25.9800max(P_in3) = -0.0200。这些值应包含在spacing_Pin中。为什么thetah_1st只有20个条目。

1 个答案:

答案 0 :(得分:1)

如果没有更多信息和实际变量值,我们就无法说出来,但我怀疑问题在于使用ismember方式。

由于您在数组中寻找浮点数而不是整数,因此您应该使用ismembertolismember具有容差)来处理任何潜在的浮点错误。

thetah_1st = Phi_intrp3(ismembertol(spacing_Pin, P_in1st));