使用MATLAB 2014使用for循环语句将一个数组的值保存到另一个数组中

时间:2016-01-05 11:16:36

标签: arrays matlab for-loop

向我解释可能有点复杂,但我会尽我所能。如果不太清楚,请再次问我澄清。所以,我有一些3-4阵列来处理这个问题。第一个数组是centroids(mx2 double)。我的第二个数组是point3D(437x517x3单)。现在使用centroids的值我想找出point3D的相应值,并将这些值存储在另一个名为co_ord的数组中。例如,对于X1和Y1在centroids中说,我想在point3D中提取相应的值,依此类推,直到Xm和Ym,并将它们存储到point3D中以供进一步使用。我通过图像处理获得centroids数组,从立体视觉获得point3D数组。

我试过的

代码

load('C:\Users\Naseeb\Desktop\centroids.mat'); % load centroids file
load('C:\Users\Naseeb\Desktop\point3D.mat'); %load point3D file
centroids = ceil(centroids); % change values into integer
x = cell(size(centroids,1),1); % create array X for storing first column values
y = cell(size(centroids,1),1); % create array Y for storing second column values
 i = cell(size(centroids,1),1);
for i = 1:size(centroids,1) 
   for row = 1:size(centroids,1)
    for column = 1:size(centroids,2)
        x{i} = centroids(size(centroids,1),1); % store values of first column into array X
        y{i} = centroids(size(centroids,1),2); % store values of second column into array Y
        co_ord = point3D(x{i},y{i},:); % store values into co_ord file
    end
   end 
end

为了澄清这一点,我用简单的例子解释了我的问题。 让我们说质心矩阵是(3x2)而point3D是(5x5x3)。质心矩阵= [2 3; 3 4; 4 5]。在该2和3中分别表示图像的水平和垂直方向上的像素值。类似地(3,4)和(4,5)。此外,point3D是5x5乘3的多维矩阵,其中5x5表示像素并且对应于这些像素值,有3个值我必须在输出数组中进行extarct并存储。例如对于质心(2,3),在对应于(2,3)的点3D矩阵中,值可以是(0.2,0.7,-0.11)。类似地,对于(3,4)和(4,5),值可以是(0.1,0.4,-0.21)和(0.35,-0.27,0.6)。现在我必须将所有这些值存储在输出数组中。 输出数组看起来像 [0.2 0.7 -0.11; 0.1 0.4 -0.21; 0.35 -0.27 0.6]

我希望现在可能会变得更加清晰。 感谢

1 个答案:

答案 0 :(得分:0)

在这么多天尝试了各种方法之后,我回答了上述问题。感谢所有试图解决这个问题的人。

load('C:\Users\Naseeb\Desktop\centroids.mat'); % load centroids file
load('C:\Users\Naseeb\Desktop\point3D.mat'); %load point3D file
centroids = ceil(centroids); % change values into integer

%%
null=[];
Co_ordinates=[];  % final matrix where Co_ordinates will be stored
for step=1:3;
    temp=[];
    for k=1:length(centroids);
        null=point3D(centroids(k,1),centroids(k,2),step);
        temp=[temp null];
    end
    Co_ordinates=[Co_ordinates; temp];
    step=step+1;
end