Renaming parameters in a loop, Comparing Z-Scores

3 views (last 30 days)
I have a 48x64x41 array where the dimensions are vertical x horizontal x time. I need to compare the z-score array values for times 1 to 41, ie:
zscores(array(:,:,i)) for i=1:41
and find the time of the array with the greatest values.
I am attempting to use a for loop to assign the array at different times to a parameter:
for i=1:41 z=zscore(array(:,:,i)) end
However, obviously like that z is reassigned each time the loop iterates. What I would like to do is have 41 new "z"'s, corresponding to each time.
at the end of the for loop there will be z1 through z41, corresponding respectively to zscore(array(:,:,1)) to zscore(array(:,:,41).
I then plan to compare these 41 results to find the time at which the array values are the greatest.
Therefore, my questions are: -How can I change the value of z to be z(i), that is z1 through z41 are the outputs at the end of the for loop?
-Does anyone have a smarter suggestion as to how I can obtain the location time of the greatest array values?
Thank you in advance for your replies!

Accepted Answer

the cyclist
the cyclist on 1 Aug 2011
This is better. [I had not realized that zscore() is a MATLAB function.]
arraySize = size(array);
z = zeros(size(array));
for i = 1:41
z(:,:,i) = zscore(array(:,:,i));

More Answers (1)

the cyclist
the cyclist on 1 Aug 2011
Use a cell array:
% Preallocate
z = cell(41,1);
% Run loop
for i=1:41
z{i} = zscore(array(:,:,i))
the cyclist
the cyclist on 2 Aug 2011
In fairness to Amina, I did several quick edits to this answer, while I (too?) hastily posted answers, before I realized that each "zi" was not expected to be a scalar. In the first incarnation, I did not use cell arrays. [Regardless, my other answer, which was accepted, was better.]

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by