# storing for loop answer into matrix

3 views (last 30 days)
Charms on 28 Oct 2019
Commented: Bhaskar R on 28 Oct 2019
Hi, i have this code and it gives me 8 answers of matrix "locations". Is there a way I can write another line of code to store the loop answers into a matrix? The end result should be a 1 x 8 cell array.
Thanks!
for i = 1:8
fefinsessionn = find(sessions_fef==i); %%extract the fef neurons that appear in the selected trials
trialsize = size(trials(i).val); %%number of trials in the selected session (i only want columns?)
A = dataset_fef_sac_all(fefinsessionn,:); %%selected rows/neurons in mean fef dataset
A(:,(trialsize(:,2)+1):621) = [];
B = ix_all(i); %%based off i, to select the respective ix, to use {ix .... ix_s8}, create ixall matrix
B2 = cell2mat(B);
[locations,~] = find(B2);%%location of target in respective ix
end

Bhaskar R on 28 Oct 2019
Yes you can write by adding the loop variavle value to index of the locations.
If the result of the find(B2) is same length for each iteration then you can assign directly loop variable index to the locations(ii) by initializing empty array in the begining of the loop. If the result length is different each time you can use locations as cell array as shown.
locations = cell(1, 8)
for i = 1:8
fefinsessionn = find(sessions_fef==i); %%extract the fef neurons that appear in the selected trials
trialsize = size(trials(i).val); %%number of trials in the selected session (i only want columns?)
A = dataset_fef_sac_all(fefinsessionn,:); %%selected rows/neurons in mean fef dataset
A(:,(trialsize(:,2)+1):621) = [];
B = ix_all(i); %%based off i, to select the respective ix, to use {ix .... ix_s8}, create ixall matrix
B2 = cell2mat(B);
[locations{i},~] = find(B2);%%location of target in respective ix
end
To access data from locations use notation as locations{1}, locations{2}...locations{8} for each loop data

#### 1 Comment

Bhaskar R on 28 Oct 2019
Answer of the Daniel M is recommended for thorough understanding of the indexing in the loop iteration