再次找到相应的值时我遇到了麻烦:
考虑向量P_in和向量spacing_Pin: spacing_Pin是从-27开始到2结束的向量。间距是0.0001。 spacing_Pin的第一个条目是:
P_in的第一个条目是-26.7400,它明显包含在P_in和spacing_Pin中。但是,当我在Matlab中键入ismember(P_in,spacing_Pin)
时,结果是一个以:
因此,它说P_in的第一个条目不包含在spacing_Pin中。但那错了!
这是我的代码的一个小版本:
P_in1 = table(:,1)
P_out1 = table(:,2)
spacing_Pin = transpose(linspace(-27,2,290001)); % spacing = 0.0001
P_out1_intrp = interp1(P_in1,P_out1,spacing_Pin,'spline');
P_in = P_in1 + some_constant;
% max(some_constant) = 0.0205, min(some_constant) = -1.135
% the entries of some_constant have many digits after the dot.
% The first entry for example is: -0,117094826063334
% this might be the issue since my spacing has accurracy 0.0001
% this is probably not the problem with ismember(), but another one I have to solve
P_out = P_out1_intrp(ismember(P_in,spacing_Pin));
确定。如果你需要some_constant或其他变量的值,我可以尝试以某种方式上传它。我现在不知道如何,因为所有的桌子都很长。
答案 0 :(得分:0)
与your previous question一样,最好使用ismembertol
。
freq = -27:0.01:2;
P_in = [-26.74, pi, 0, 42];
P_in_isInFreq = ismembertol(P_in, freq, eps);
此处P_in_isInFreq
将为[1 0 1 0]
。注意输出是一个与第一个输入大小相同的逻辑数组。