单元阵列由double中的400x1元素组成(并且可以扩展到1,000,000 x 1)。 我想用-1.000过滤所有条目。 过滤浮动值的最佳方法是什么? 我应该在单元格数组还是矩阵中进行? 或者我应该只创建一个for循环,遍历每个元素,并将非-1.000条目存储到新数组中?
我使用textscan从文件中读取值,然后将其转换为矩阵以绘制cdf图。但是我想从图表中删除带-1的所有条目。
fid = fopen('t1_error.txt','r');
C = textscan(fid, '%.3f');
fclose(fid);
A = cell2mat(C);
[ycdf,xcdf] = cdfcalc(A);
ycdf = ycdf(2:length(ycdf));
plot(xcdf, ycdf, 'LineWidth', 2);
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以简单地执行类似
的操作tolerance = 1e-6;
A(A+1 < tolerance) = [];
在将容差设置为应用程序的某个可接受值后过滤掉非常接近-1
的值。
答案 2 :(得分:0)
你永远不要在Matlab中写一个for循环,除非你尝试了所有其他的可能性;)记住,它是面向矩阵的编程。
如果要过滤掉-1,只需执行:
A = magic(6);
A(1,3) = -1.23;
A(2:4,3:5) = -1.00;
% the -1.23 value is preserved by the following line
A(A==-1.0000) = 0;
或者如果你想知道那些-1在哪里:
A = magic(6);
A(2:4,3:5) = -1;
minus_one_loc = find(A == -1);
A(minus_one_loc) = 0;
所以,如果我理解你想要的东西,这就是答案。
欢呼声