如何搜索数组以查找匹配项

时间:2016-05-24 03:33:03

标签: matlab multidimensional-array

我有一个4x~50,000 array,其中第一个3 rows持有x y z coordinates,然后是某个给定位置的相应值。

即,

row 1 |  1   2   3   4   5   1...
row 2 |  1   1   1   1   1   1...
row 3 |  0   0   0   0   0   1...
row 4 | 0.7 0.2 1.0 0.3 0.3 0.5

我想将此数据重新排列为3D array,以fMRI样式绘制此数据 例如,

 3Darray(1,1,0) = 0.7 
 3Darray(2,1,0) = 0.2
 3Darray(3,1,0) = 1.0

。 。

我无法同时浏览行以匹配所有三个x,y,z, values

欢迎任何建议!

谢谢,

此致

P

1 个答案:

答案 0 :(得分:2)

这是sub2ind的工作!这是我为测试而制作的虚拟数组,

%// example array
array=[1 2 3 4 5 1 2 3 4 5
    1 1 1 1 1 2 2 2 2 2
    1 1 1 1 1 1 1 3 3 3
    rand(1,10)]

代码:

n=max(array(1:3,:),[],2).'; %// get size of final array
m=zeros(n); %// make an array of zeros of that size
ind=sub2ind(n,array(1,:),array(2,:),array(3,:)); %// get linear indices of elements
m(ind)=array(4,:); %// put elements into the array