Summering med hjälp av if satser
Frågan jag har kört fast med lyder:
Använd kommandot A=randi([10,100],6,20) för att skapa en matris
med sex rader och 20 kolonner, vars element är slumptal mellan 10 och
100. Hur många av elementen i A är tal mellan 30 och 65? Beräkna
summan av dessa tal.
Jag kan lösa problemet genom att manuellt räkna hur många tal som ligger mellan 30 och 65 för att sedan summera ihop dom utan MATLAB. Nu vill jag dock lösa problemet med hjälp av if-satser och for-slingor. Det finns även en ledtråd att jag ska använda koden
s=0;
N=0;
for i=1:6
for j=1:20
if...
Jag förstår inte vad den koden betyder eller hur jag ska fortsätta
Välkommen till PLUGGAKUTEN!
En for-loop kan sägas vara ett specialfall av en while-loop. En if-sats delarupp olika val. Det är 6 rader och 20 kolumner i matrisen. I for-loopen du fått går variabeln i därför över raderna (då den går mellan 1 - 6) och variabeln j går över kolumnerna (då den går från 1 - 20). Spara summan av alla värden i variablen s och spara hur många variabler som summerats i N. Om du skriver om variabelnamnen till summa, antal, rader, kolumner kanske det blir enklare att se vad koden gör. Tal utan beskrivning som i for-loopen du fått brukar kallas magic numbers, eftersom man inte vet vad dom är. Generellt ska man undvika magic numbers eftersom det är svårt att förstå vad dom har för betydelse i koden.
Ett hett tips är att göra en mindre matris du enklare kan kontrollera för hand. Detta gör att du kan ha mer översikt över vad din kod gör.
if (A(i,j) >= 30) && (A(i,j) <= 65)
N = N+1;
s = s + A(i,j)
end
Du kan läsa om detta här:
Execute conditions if statement is true (mathworks help center)
Du kan också skriva "help if" i Matlab.
Aerius skrev:Tal utan beskrivning som i for-loopen du fått brukar kallas magic numbers, eftersom man inte vet vad dom är. Generellt ska man undvika magic numbers eftersom det är svårt att förstå vad dom har för betydelse i koden.
Det är del av lärandeprocessen att förstå koden så poängen är att deras betydelse inte direkt ska vara uppenbar.
Ebola skrev:Aerius skrev:Tal utan beskrivning som i for-loopen du fått brukar kallas magic numbers, eftersom man inte vet vad dom är. Generellt ska man undvika magic numbers eftersom det är svårt att förstå vad dom har för betydelse i koden.
Det är del av lärandeprocessen att förstå koden så poängen är att deras betydelse inte direkt ska vara uppenbar.
Jag skrev ju generellt ska dom undvikas. I det här fallet hade jag också skrivit sådär som i uppgiften