我有一个512 x 512 x 112矩阵,有三种值:零,非零和NaN。
如何有效地获得矩阵非零值的索引(不使用循环)?
答案 0 :(得分:2)
来自@scmg的评论是要走的路--Matlab的线性逻辑索引是一种避免在元素上循环的方法;我的电脑只需1.2秒。这是一个有效的例子:
rng(8675309) %jenny number for consistency
x=randn([512,512,112]); % make random matrix
x(x<0)=NaN; % set some elements to NaN
x(x<4)=0; % set some elements to zero
[i1,i2,i3]=ind2sub(size(x),find(x>0)); %use find+ind2sub to avoid loop
scatter3(i1,i2,i3)% plot results for fun