MATLAB Answers

Info

This question is closed. Reopen it to edit or answer.

Saving a loop array

1 view (last 30 days)
Joshua Welsh
Joshua Welsh on 16 Dec 2016
Closed: Joshua Welsh on 8 Jun 2018
I'm trying to save a loop array, each output (BeadC & BeadS) produces a 9x1801 double - I would like to save each iteration so it is 9x1801, 18x1801 etc. Currently it is producing the correct sizes but they are just repeats of the same data. What do I need to edit?
lam =[405 488]; % Wavelength of scatter (nm)
n=length(lam);
for t=1:n
nx= length(openang_range); % number of angles to calculate collection for
ny= length(Bead_SSC(t,:))*length(lam(t)); % length of all beads being calculated
jj=t*ny;
kk=jj-(ny);
b=(zeros(size(Bead_nm)));
c=length(b(:));
BeadC = zeros(c,nx);
BeadS = zeros(c,nx);
for j=1:ny
for ii=j:kk:c
[BeadC(ii,:), BeadS(ii,:)] = Length1(Bead_nm(t, j), Bead_RI(t, j), lam(t), k0(t), n_wat(t), openang_range); % Collect or Create Predicted Data for Analysed Flow Cytometry Beads
end
end
end
  4 Comments
Joshua Welsh
Joshua Welsh on 18 Dec 2016
Sorry, I can't put all of the code in, there are 20 odd scripts. This is the main one.

Accepted Answer

Joshua Welsh
Joshua Welsh on 19 Dec 2016
I have fixed this by flattening the matrix and labelling with my first loop.
lam =[405 488]; % Wavelength of scatter (nm)
n=length(lam);
for t=1:n
nx= length(openang_range); % number of angles to calculate collection for
ny= length(Bead_SSC(t,:))*length(lam(t)); % length of all beads being calculated
jj=t*ny;
kk=jj-(ny);
b=(zeros(size(Bead_nm)));
c=length(b(:));
BeadC = zeros(ny,nx);
BeadS = zeros(ny,nx);
for j=1:ny
[BeadC(ii,:), BeadS(ii,:)] = Length1(Bead_nm(t, j), Bead_RI(t, j), lam(t), k0(t), n_wat(t), openang_range); % Collect or Create Predicted Data for Analysed Flow Cytometry Beads
end
BeadC1(t,:)=BeadC(:)'
BeadS1(t,:)=BeadS(:)'
end

More Answers (1)

Jan
Jan on 17 Dec 2016
Edited: Jan on 17 Dec 2016
The right hand side of the innermost loop does not depend on the loop counter ii:
Length1(Bead_nm(t, j), Bead_RI(t, j), lam(t), k0(t), n_wat(t), openang_range);
Therefore the results must be repeated. I cannot guess where the dependency to ii must be inserted.
Note: Use the more efficient c=numel(b) instead of c=length(b(:)).
  2 Comments
Jan
Jan on 18 Dec 2016
I have no idea. I cannot imaging, what the loops should do. I only see, what they do and that they do it repeatedly.

Community Treasure Hunt

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

Start Hunting!