Armin Halilovic MATLAB: if, for, while
Sida 1 av 4
IF-SATSEN, FOR-LOOP (FOR SLINGAN) , WHILE-LOOP (WHILE-SLINGAN)
BINDEORD i sammansatta påståenden betecknas I MATLAB enligt följande tabell:
inte och eller antingen eller (exclusive or)
~ & | xor
JÄMFÖRELSE i MATLAB:
lika med inte lika
med mindre än mindre än
eller lika med större än större än eller lika med
== ~= < <= > >=
IF SATSEN
If satsen används vid valsituationer: "Om ett villkor är uppfylld gör några kommandon".
Syntax:
if villkor
kommando 1, kommando 2, kommando 3,..., kommando n end
Om villkoret är uppfylld exekveras komandon mellan if och end. Annars fortsätter programmet efter end.
If sats kan kompletteras med else och elseif.
Skriv nedanstående exempel i en matlab script-fil (m-fil) och testa hur de fungerar.
Exempel 1
%% clc %rensar kommando-fönstret
clear % rensar alla variabler a=15, b=40
if (a>b) c1=11 c2=3^4
else e1=222, e2=333 end
Exempel 2
%%clear clca=10
if (a>20 & a<30) % tecken & betyder och
Armin Halilovic MATLAB: if, for, while
Sida 2 av 4
b=15elseif a<=20 c1=8, c2=12.6 else d1=21,d2=33,d3=34 end
FOR LOOP (FOR SLINGA)
For loop används för att upprepa ett antal kommandon ett bestämt antal gånger
Syntax:for k=1:n kommandon end
Några exempel
Exempel 3: För hela tal m som ligger mellan 5 och 10 beräknar vi m^2 och 10*m.
clear clc for m=5:10 k=ma=m^2, b=10*m end
Exempel 4: Två for-loop. Vi bildar en matris M av typ 5x4 med element M(k,j)=k^2+100*j.
clear clc for k=1:5 for j=1:4
M(k,j)=k^2+100*j;
end endM
UPPGIFT 1.
Beräkna summan av alla hela tal från 15 till och med 20, med andra ord, beräkna ∑
= 20
15 k
k Lösning:
clear
clcS=0; % startvärdet =0 skrivs innan forloop for k=15:20
S=S+k end
S % Här visas summan
Armin Halilovic MATLAB: if, for, while
Sida 3 av 4
UPPGIFT 2.
Beräkna summan av kvadrater av alla hela tal från 13 till och med 18, med andra ord beräkna ∑
= 18
13 2 k
k . Lösning:
clear
clcS=0; % startvärdet =0 skrivs innan for-loop for k=13:18
S=S+k^2; % Vi avslutar ett delkommando med semikolon % om vi inte vill se delresultat på skärmen end
S % Här visas summan
UPPGIFT 3.
A=randi([200, 330],1,150) definierar vi en vektor med 150 element (dvs en matris med 1 rad och 150 kolonner, vars element är slumpvalda tal som ligger mellan 200 och 330 (200 och 330kan också väljas).
a) Hur många tal i A som är delbara med både 4 och 6 . b) Beräkna summan av alla sådana tal.
clc clear antal=0;
s=0
A=randi([200, 330],1,150) for i=1:150
if (rem(A(i),4)==0 & rem(A(i),6)==0) antal=antal+1;
s=s+A(i) end
end antal s
UPPGIFT 4. Med kommandot A= randi([10,50],5,15)
definierar vi en matris med 5 rader och 15 kolonner, vars element är slumpvalda tal som ligger mellan 10 och 50 (10 och 50 kan också väljas).
a) Hur många tal i A uppfyller villkoret 20 <= A(i,j) <=40 ? Beräkna summan av alla sådana tal.
Armin Halilovic MATLAB: if, for, while
Sida 4 av 4
b) Hur många tal i A uppfyller villkoret A(i,j)<=20 eller A(i,j)>=45 Beräkna summan av alla sådana tal.
Lösning:
clear clc
A= randi([10,50],5,15) % ger en matris av typ 5x15 med slumptal % mellan 10 och 50
%% a)
s1=0; % Vi startar summan med s1=0 N1=0;
for i= 1:5 for j=1:15
if A(i,j)>=20 & A(i,j)<=40 % tecknet & betyder OCH N1=N1+1; s1=s1+A(i,j);
else N1=N1+0; s1=s1+0; % det här kommandot är % inte nödvändigt i vår uppgift end
end end
antalet1=N1 summan1=s1
%% b)
s2=0; % Vi startar summan med s=0 N2=0;
for i= 1:5 for j=1:15
if A(i,j)<=20 | A(i,j)>=40 % tecknet | betyder eller N2=N2+1; s2=s2+A(i,j);
else N2=N2+0; s2=s2+0;
end end end
antalet2=N2 summan2=s2
% vi kan använda fprintf för att skriva resultat
% med förklaringstext i samma rad:
fprintf('Antalet element som uppfyller kravet b = %4.0f \n',N2) fprintf('Summan av sådana element är = %4.0f \n',s2)
ETT EXEMPEL MED WHILE-LOOP (WHILE-SLINGAN)
Exempel 5:
clear clcs=0
k=1while s <=100 % beräknar kommandon mellan while och end s=s+k^2 % ända tills villkoret s <=100 är uppfyllt.
k=k+1 % Därefter fortsätter efter end endk
s