HÖGSKOLAN PÅ ÅLAND Utbildningsprogrammet i elektroteknik

HÖGSKOLAN PÅ ÅLAND
Utbildningsprogrammet i elektroteknik
Introduktion till teknisk mjukvara
Övning 3 i MATLAB
Lös följande uppgifter i MATLAB:
1. (2p) Skriv en funktion som utnyttjar den inbyggda funktionen rand
för att returnera ett slumpmässigt tal som är mellan 0 och 10.
2. (2p) Skriv om föregående funktion så att man vid anropet av funktionen kan ange mellan vilka värden, a och b, det slumpmässiga talet
skall vara.
3. (2p) Skriv om föregående funktion så att den returnerar en kolumnvektor med slumpmässiga tal mellan a och b. Vid anropet av funktionen
skall man förutom a och b också ange hur många tal som kolumnvektorn skall innehålla.
4. (2p) Använd den inbyggda funktionen rand för att skriva en funktion
som returnerar n stycken distinkta heltal mellan 1 och n i slumpmässig
ordning (dvs., alla heltal mellan 1 och n men i slumpmässig ordning).
Funktionen tar heltalet n som input. Använd INTE den inbyggda
funktionen randperm.
5. (2p)
Skriv en for loop som skriver ut följande vid MATLAB prompten:
Varv 1 i loopen
Varv 2 i loopen
Varv 3 i loopen
..
.
Tips: De inbyggda funktionerna disp och num2str.
1
6. (2p)
Skriv en while loop som snurrar på tills man ger in ett givet tal. Som
exempel kan resultatet vid MATLAB prompten vara
Jag
Jag
Jag
Jag
slutar
slutar
slutar
slutar
om
om
om
om
du
du
du
du
ger
ger
ger
ger
in
in
in
in
talet
talet
talet
talet
3:
3:
3:
3:
2
4
5
3
Tips: funktionen input.
7. (4p)
Använd en for loop i MATLAB för att räkna ut och lagra de 20 första
värdena i Fibonaccis talsekvens vars 8 första värden ges av:
0, 1, 1, 2, 3, 5, 8, 13
Tips: Givet de två första värdena i sekvensen:
F1 = 0 F2 = 1
kan sekvensen räknas med den rekursiva formeln:
Fn = Fn−1 + Fn−2
8. (2p)
Skriv en funktion som givet de två tidigare värdena i Fibonaccis talsekvens returnerar följande värde i sekvensen.
9. (8p)
Utnyttja en for-loop vars index går från 1 till N och bestäm en vektor
y inne loopen så att elementen efter loopen ges av:
(a) (2p) y = 1 3 5 7 9 . . .
(b) (2p) y = 0 1 4 9 16 . . .
(c) (2p) y = 0 3 8 15 24 . . .
(d) (2p) y = 1 27 125 343 729 . . .
Tips: Du kan utgå från koden:
N=10;
y = zeros(1,N);
for index=1:N
y(index) = %%%%%Fyll i denna rad!
end
2
10. (4p) Upprepa föregående uppgift (1p per delfall) utan att använda en
loop, dvs genom att istället använda kolonoperatorn :.
11. (4p) Givet vektorn:
A= linspace(0,1,N);
vilket med N=5; resulterar i
A =
0
0.2500
0.5000
Ersätt vart tredje element med:
0.7500
1.0000
(a) (2p) π så att (då N=5;):
A =
3.1416
0.2500
0.5000
genom att utnyttja en for-loop
3.1416
1.0000
(b) (2p) Upprepa föregående fall utan att utnyttja en loop, dvs genom
att istället använda kolonoperatorn :.
Skriv din kod så att den fungerar för ett valfri längd på vektorn, dvs
ett godtyckligt N.
3