Storing output from each FOR LOOP ititeration in MATLAB

Hello,
Say I have 3 matrix data files in a folder..
I have a function (clustering_coef_bu) which calculates the clustering coefficient of a 2D matrix (data; has the dimensions 512x512) file. The output vector of the function creates a 512x1 Matrix (Clustering Coefficient), in double format.
With the for loop below, for each matrix (data) I'm calculating the clustering coefficient. However, I am having difficulting being able to store the output clustering coefficient for each run of the for loop. It would be ideal to output the clustering coefficient of each matrix into one singular structure. I.e a cell array, which has the dimensions 512x3.
for k = 1:3
ClusteringCoefficient=clustering_coef_bu(data)
end
Anyhelp would be great. Thanks

 Respuesta aceptada

Jan
Jan el 7 de Ag. de 2013
Editada: Jan el 7 de Ag. de 2013
Or:
ClusteringCoefficient = zeros(512, 3);
my_data = cat(3, data1, data2, data3);
for k = 1:3
ClusteringCoefficient(:, k) = clustering_coef_bu(my_data(:,:,k));
end

3 comentarios

Thanks Simon.
I should of been more specific in saying I intend for the actual data themselves to be generated within the for loop. This is performed by a randomizer function, which randomizes an input data matrix.
The function is called as;
randomnetwork=randomizer(input)
But, can I apply a similar function as above to generate a 3D matrix. I.e
randomnetworkdata = zeros(512, 512, 3)
for k = 1:3
randomnetworkdata(:,:,k) = randomizer(data)
Then add your above code for the clustering coefficient calculation.
Jan
Jan el 7 de Ag. de 2013
Yes, of course, this should work. You can simply try it to test if it works.
Thanks Simon, I have the correct code now.
randomnetworkdata = zeros(512, 512, 3);
ClusteringCoefficient = zeros(512, 3);
for k = 1:3
randomnetworkdata(:,:,k) = randomizer(s);
ClusteringCoefficient(:,k) = clustering_coef_bu(randomnetworkdata(:,:,k));
end

Iniciar sesión para comentar.

Más respuestas (1)

ClusteringCoefficient = cell(3,1); % initialize empty cell array
my_data = zeros(512,512,3); % initialize empty matrix to hold your data
my_data(:,:,1) = data1;
my_data(:,:,2) = data2;
my_data(:,:,3) = data3; % your 3 matrices put together in a 3D matrix, you can adapt this last 4 lines to your data
for k = 1:3
ClusteringCoefficient{k} = clustering_coef_bu( my_data(:,:,k) );
end

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Preguntada:

el 7 de Ag. de 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by