While it does not show me any error, the counter values are clearly incorrect. @Walter Roberson
Adding a counter to a loop
    15 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Mohammad Dabbagh
 il 23 Giu 2021
  
    
    
    
    
    Commentato: Mathieu NOE
      
 il 24 Giu 2021
            Hi there,
I was wondering if anyone could do me a favor and let me know why my added counters blow does not work!
Thak you so much in advance.    
for time = 1 : 8760
    CountWintW=0;
    CountWintE=0;
    CountWintS=0;
    CountWintN=0;
    for WinNum=1:4
        if AbsRad(time,WinNum) >= 0.0001
            NewSHGC(WinNum) = shgc.open;
            NewWinR(WinNum) = 1/U_factor.open;
        else
            NewSHGC(WinNum) = shgc.close;
            NewWinR(WinNum) = 1/U_factor.close;
            if WinNum ~=1
                CountWintW = CountWintW+1;
            elseif WinNum ~=2
                CountWintE = CountWintE+1;
            elseif WinNum ~=3
                CountWintS = CountWintS+1;
            elseif WinNum ~=4
                CountWintN = CountWintN+1;
            end
        end
    end
end
3 Commenti
  Rik
      
      
 il 23 Giu 2021
				You clearly didn't try running your code line by line with the debugger.
If you had done so, you would have spotted 2 issues:
- every time step you're resetting the counters
- because you're using ~=, the third option will never be reached (if WinNum is 1 the second counter will increment, if WinNum is any value not equal to 1 the first counter will increment)
It also looks like it would make sense to use a vector and use WinNum as the index:
CountWin=zeros(1,4);
for time = 1 : 8760
    [...]
    CountWin(WinNum)=CountWin(WinNum)+1;
Risposta accettata
  Mathieu NOE
      
 il 23 Giu 2021
        hello 
IMHO, the initialisation of the counters should be done BEFORE the first for loop 
    CountWintW=0;
    CountWintE=0;
    CountWintS=0;
    CountWintN=0;
for time = 1 : 8760
    for WinNum=1:4
        if AbsRad(time,WinNum) >= 0.0001
            NewSHGC(WinNum) = shgc.open;
            NewWinR(WinNum) = 1/U_factor.open;
        else
            NewSHGC(WinNum) = shgc.close;
            NewWinR(WinNum) = 1/U_factor.close;
            if WinNum ~=1
                CountWintW = CountWintW+1;
            elseif WinNum ~=2
                CountWintE = CountWintE+1;
            elseif WinNum ~=3
                CountWintS = CountWintS+1;
            elseif WinNum ~=4
                CountWintN = CountWintN+1;
            end
        end
    end
end
2 Commenti
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Startup and Shutdown in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


