How to keep an element fixed until it fits a condition?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
for ii=1:4
deneme{ii,:}= vericell(class==ii,:);
for j = 4:14
deneme{ii}{:,j};
meanres(ii,j) = mean (deneme{ii}{:,j});
stdres(ii,j) = std(deneme{ii}{:,j});
uscalc(ii,j) = (predictioncolumn(j) - meanres(ii,j)) ^2 / (2* (stdres(ii,j)^2));
meancalc(ii,j) = 1/(sqrt(2*pi)* stdres(ii,j)) * (2.71^(uscalc(ii,j))) ;
bolumler{ii,:} = sum(veri.Class==ii)/ length(veri.Class);
likelihood(ii,j) = meancalc(ii,j) * bolumler{ii,:};
end
end
I want ii to stay as 1 while j keeps iterating until it reaches it's limit (14). And when it happens I want ii to be 2 and j to iterate from 4 to 14.
0 Kommentare
Antworten (2)
njj1
am 8 Mär. 2018
Can you clean up the code a little? It's not clear where the loops begin and end... A couple more questions/comments.
1) How can j be greater than 14, since the loop only has j moving from 4 to 14?
2) Try not to use "length"; instead use size(x,dim) or numel(x).
3) If you want to accumulate the multiplication of meancalc(ii,j)*bolumler{ii,:}, then you could use the variable likelihood in the multiplication (i.e., likelihood(ii,j) = likelihood(ii,j-1)*meancalc(ii,j)).
4 Kommentare
njj1
am 8 Mär. 2018
Right, so try this:
for ii=1:4
deneme{ii,:}= vericell(class==ii,:);
for j = 4:14
deneme{ii}{:,j};
meanres(ii,j) = mean (deneme{ii}{:,j});
stdres(ii,j) = std(deneme{ii}{:,j});
uscalc(ii,j) = (predictioncolumn(j) - meanres(ii,j)) ^2 / (2* (stdres(ii,j)^2));
meancalc(ii,j) = 1/(sqrt(2*pi)* stdres(ii,j)) * (2.71^(uscalc(ii,j))) ;
bolumler{ii,:} = sum(veri.Class==ii)/ length(veri.Class);
likelihood(ii,j) = meancalc(ii,j) * bolumler{ii,:};
end
what_you_care_about = prod(meancalc(ii,4:14))*bolumler{ii,:};
end
Star Strider
am 8 Mär. 2018
The code you posted should do that.
The outer ‘ii’ loop begins at 1. The inner ‘j’ loop will iterate from 4 to 14 for each value of the outer loop ‘ii’ variable. Then ‘ii’ will increase by 1, the inner loop iterates, and the process continues until ‘ii’ is 4 and the final iteration of ‘j’ is 14.
Also, the code you posted is missing an end for the ‘ii’ loop. I assume you simply forgot to copy it.
3 Kommentare
Star Strider
am 8 Mär. 2018
Your code as you wrote it will do what you want.
This will allow you to see what your indices are doing:
for ii = 1:4
for j = 4:14
fprintf('ii = %2d\tj = %2d\n', ii,j)
end
end
fprintf('\n\n')
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!