Übung 4 - Signale verarbeiten I

Download Report

Transcript Übung 4 - Signale verarbeiten I

Übung 4 - MdMT
05.12.2014
Methoden der Medizintechnik
Übung zur Vorlesung
[email protected]
[email protected]
Folge 4 – Signale verarbeiten I
Audiodaten einlesen + verändern
1
Übung 4 - MdMT
Inhalte und Ziele der Übung
1. Wiederholung: Funktionen mit Rückgabewert
2. Neues Werkzeug: Funktionen mit mehreren Eingabewerten
3. Audiodaten in Matlab einlesen und verändern
4. Übungsaufgaben
05.12.2014
2
Übung 4 - MdMT
05.12.2014
0. Literaturhinweis
Ein gutes Matlab-Tutorial, sehr viel ausführlicher als unsere Übung:
http://staff.technikum-wien.at/~teschl/MatlabSkriptum.pdf
Oder auch:
http://www.tutorialspoint.com/matlab/matlab_functions.htm
Und:
http://ctms.engin.umich.edu/CTMS/index.php?aux=Basics_Mat
lab
… noch viel viel mehr!
3
Übung 4 - MdMT
05.12.2014
4
Wiederholung: Funktionen mit Rückgabewert
Wie verwendet man Funktionen in Matlab?
•
Matlab hat viele Funktionen schon eingebaut, z.B.
y = sin(3); % berechnet den Sinus des Eingabewertes 3
% und packt ihn in die Variable mit dem
% Namen y
•
Haben also einen Namen (um sie aufzurufen und zu erahnen, was sie tun)
•
Berechnen uns einen Rückgabewert (hier: der Sinus von 3) in Abhängigkeit
eines Eingabewertes (hier: 3)
•
Lassen sich von überall - z.B. im Command Window (unten) - aufrufen
Übung 4 - MdMT
05.12.2014
5
Wiederholung: Funktionen mit Rückgabewert
Wie verwendet man Funktionen in Matlab? (forts.)
•
•
Funktionen kann man verschachteln und genau wie Variablen verwenden!
•
Und: Man kann dann die eigenen Funktionen genau wie die fertigen
verwenden!
•
Beispiele (Command Window):
Man kann selbst neue Funktionen anlegen, die Matlab ergänzen
(vgl. letzte Übung und nächste Folie)
p
q
r
s
=
=
=
=
sin(3);
sin(cos(3)); % verschachtelter Aufruf
meineFunktion(cos(3));
cos(meineFunktion(3));
t = 3 + 4;
u = meineEigeneFunktion(t); % u == meineFunktion(7)
Übung 4 - MdMT
05.12.2014
6
Wiederholung: Funktionen mit Rückgabewert
Wie erstellt man eigene Funktionen, die man z.B. im Command Window
(=„Konsole“) aufrufen kann?
•
Neue Datei erstellen, die so heißt, wie die eigene Funktion (z.B.
meineNegativfunktion.m) – hier kommt dann die Funktion in der
besprochenen Form hinein:
function [rueck] = meineNegativFunktion(ein)
rueck = -1 * ein;
end
•
Benutzung dann im Command Window wie normale Matlab-Funktionen,
z.B.
y = meineNegativfunktion(10); % y == -10
z = 2 + meineNegativfunktion(y) * meineNegativFunktion(4)
 Freiwillige Hausaufgabe: Nachbauen und damit ausrechnen:
Wie groß ist z?
Übung 4 - MdMT
05.12.2014
7
Neu: Funktionen mit mehreren Eingabewerten
•
Bisher: ein Eingabewert – z.B. y = sin(x).
•
Matlab hat auch Funktionen mit mehreren Eingabwerten eingebaut, z.B:
s = plus(a,b); % dasselbe wie s = a + b
t = plus(10,5); % t == 15
•
Auch solche Funktionen können wir selbst erstellen (Datei meineMult.m):
function [r] = meineMult(eingabeA, eingabeB)
r = eingabeA * eingabeB;
end
•
Aufruf im Commandwindow z.B.:
u = meineMult(321,123) % dasselbe wie u = 321 * 123
 Freiwillige Hausaufgabe: meineMult so erweitern, dass sie 4
Eingabewerte akzeptiert und multipliziert.
 Zusatzaufgabe dieser Übung: meineMult so umbauen, dass beliebig
viele Zahlen miteinander multipliziert werden können. Nur * ist als
Multiplikations-Operation erlaubt!
Übung 4 - MdMT
Audio in Matlab
•
Audiodaten haben zwei Dimensionen:
1. Zeit – x-Achse
2. „Luftdruck “ (oder: „Lautsprechermembranauslenkung“
oder: „Amplitude“)
•
Luftdruckschwankung / Amplitude: Je größer, desto lauter:
•
Vertiefte Behandlung in der Vorlesung
05.12.2014
8
Übung 4 - MdMT
Audio in Matlab
•
Audiodaten haben zwei Dimensionen:
1. Zeit – x-Achse
2. „Luftdruck “ (oder: „Lautsprechermembranauslenkung“
oder: „Amplitude“)
•
Luftdruckschwankung / Amplitude: Je größer, desto lauter:
•
Vertiefte Behandlung in der Vorlesung
05.12.2014
9
Übung 4 - MdMT
05.12.2014
10
Audio in Matlab
Wie sehen die Daten zu den Diagrammen in Matlab aus?
•
Im simpelsten Fall: Eine lange Liste aus (tausenden!) einzelnen Amplituden
hintereinandergereiht:
audio_a = [0.7, 0.8, 0.9, 0.5, 0.1, -0.4, -0.8, ...];
Zeit
audio_b = [0.35, 0.4, 0.45, 0.25, 0.05, -0.2, -0.4, ...];
 Verständnisfrage: Welches Signal ist lauter - audio_a oder audio_b?
Übung 4 - MdMT
05.12.2014
Audio in Matlab
Wie bekomme ich „echte“ Audiodaten in Matlab hinein, so dass sie so: ...
audio_a = [0.7, 0.8, 0.9, 0.5, 0.1, -0.4, -0.8, ...];
... vorliegen? Ganz einfach – in der Konsole:
audio_a = wavread(‘dateiname.wav‘);
% Einlesen aus Datei –
% Datei muss im
% aktuellem Ordner liegen!
plot(audio_a);
% Diagramm ausgeben
Und wie kann man davon die Amplitude / Lautstärke ändern?
audio_b = audio_a * 0.5;
plot(audio_b)
% Lautstärke auf 50%
% reduziert in audio_b!
11
Übung 4 - MdMT
05.12.2014
Übungsaufgaben: Eine eigene Audio-Funktion!
1. Schreibe eine eigene Funktion myVolume(datei, lautstaerke), mit
der sich eine Audiodatei einlesen lässt und die den Inhalt der Datei mit
geänderter Lautstärke zurückgibt.
Die Funktion soll sich wie folgt in der Konsole aufrufen lassen:
y = myVolume(‘dateiname.wav‘,50); % y enthält dann die
% Audiodaten mit halber
% Lautstärke
2. Plotte den Rückgabewert deiner Funktion, wenn du sie mit den
Parametern ‘Apollo13.wav‘ und mit einem Lautstärkewert von 25%
aufrufst.
3. Gib die Daten als Datei aus – dazu in der Konsole eingeben:
wavwrite(y, 44100,‘Appollo13_leise.wav‘);
Zusatzaufgabe: Erweitere die Funktion meineMult von Folie 7 so, dass
beliebig viele Zahlen miteinander multipliziert werden können. Nur * ist
als Multiplikations-Operation erlaubt!
12