Question about for loop problem

1 Ansicht (letzte 30 Tage)
Franziska
Franziska am 11 Sep. 2019
Kommentiert: Franziska am 11 Sep. 2019
Hi Everyone I have a question about for loops:
I have a cutoff value (that is defined in another for loop, but I think it doesn't matter for my issue). I have individuals C's (Cj) between 0 and 1. Now I want for every element of Cj to check wether it is above or below the cutoff (The resulting EUI is calculated differently), and in the end I want a vector EUI, that gives me the EUI for every element of Cj. After this I want to sum up over all the EUI's.
It doesn't seem to work, can someone spot the mistake?
cutoff(i) = %definition of cutoff
Cj = linspace(0,1)
EUI = zeros(size(Cj));
for j = 1:numel(Cj)
if Cj(j)<cutoff(i)
EUI(j) = %formula;
else
EUI(j) = %formula;
end
end
EUI_total(i) = sum(EUI(j));

Akzeptierte Antwort

meghannmarie
meghannmarie am 11 Sep. 2019
Bearbeitet: meghannmarie am 11 Sep. 2019
In the last line, you are summing just the last element. Remove the j index.
EUI_total = sum(EUI);
I would vectoize this code if I were you and avoid loop. Try something like this:
cutoff(i) = %definition of cutoff
Cj = linspace(0,1);
EUI = zeros(size(Cj));
idx = Cj < cutoff(i);
EUI(idx) = formula1(Cj(idx));
EUI(~idx) = formula2(Cj(~idx));
EUI_total(i) = sum(EUI);
  1 Kommentar
Franziska
Franziska am 11 Sep. 2019
you're right, the summing up was the issue. Thank you very much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 11 Sep. 2019
Bearbeitet: Matt J am 11 Sep. 2019
I don't see any mistakes (that's why posting your error messages and output is always a good thing), however, the whole thing can be done more efficiently with logical indexing in just a few lines
isless=(Cj<cutoff(i));
EUI(isless)= %formula;
EUI(~isless)= %formula;
result=sum(EUI)

Kategorien

Mehr zu Loops and Conditional Statements 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!

Translated by