|
char0n |
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 16:02
Titel: GUI Stimmgerät
|
|
|
|
|
Hallo,
ich arbeite zur Zeit an einem Projekt in dem eine Soundaufnahme über eine FFT in den Frequenzbereich transformiert wird.
Aus diesem Spektrum soll dann der Ton / die Töne herausgelesen werden, um eine Art Stimmgerät für Instrumente zu realisieren.
Dazu habe ich ein GUI aufgebaut, zu dem ich drei Fragen habe:
1. Wie kann ich in dem Plot von dem Spektrum eine Zoom-Funktion einbauen? Der Plot ist ein Axes-Element das ich wie folgt aufrufe:
2. Um den Ton herauszufinden muss ich die Grundfrequenz "rausfiltern" und mit meiner Tabelle vergleichen.
Die Grundfrequenz wäre im Spektrum der erste hohe Ausschlag.
Gibt es eine Funktion die mir Matlab bieten kann um diese Maxima genau zu bestimmen?
Ich habe schon einen ersten Versuch mit "findpeaks" gestarten, wobei mir das Ergebnis noch nicht ganz gepasst hat, vielleicht gibt es bessere Alternativen?
3. Um die Grundfrequenz zu vergleichen brauche ich eine Tabelle die beim Programmstart geladen wird. In dieser sind dann die Töne passend zu den Frequenzen aufgelistet. Wie lade ich das geschickt rein?
Und vorallem was mich am meisten beschäftigt:
Wie kriege ich ein "if"-Abfrage hin die den Wert aus der Tabelle mit dem realen Wert vergleicht. Der reale Wert hat ja eine gewisse Toleranz die vernachläßigt werden könnte.
Ich habe selbst Erfahrung mit C/C++ und auch mit OOP, aber die Möglichkeiten die mir Matlab bietet überfordern mich grad etwas. =)
Muss mich da so langsam aber sicher reintasten, ich hoffe ihr könnt mir helfen.
Im Anhang ist eine erste Version zu sehen.
edit by steve: Code-Umgebung ergänzt. Bitte zukünftig selbstständig formatieren (Button oben mittig). Danke!
Beschreibung: |
erste Version meines GUIs |
|
Download |
Dateiname: |
Stimmgeraet.JPG |
Dateigröße: |
86.4 KB |
Heruntergeladen: |
673 mal |
|
|
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 16:23
Titel:
|
|
Frage 1 hat sich gerade geklärt ich habe den Toolbar-Editor entdeckt!
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 10.07.2009, 16:30
Titel:
|
|
|
|
|
Moin,
willkommen im Forum!
zu 1.:
Du könntest einen Toggle-Button erstellen, der die Zoomfunktion an- und ausschaltet:
zu 2.:
Es gibt die Funktion FIND mit welcher man in Kombination der Funktion MAX das ganze recht einfach erledigen kann:
zu 3.:
Ich würde eine Matrix erstellen mit den Tönen in einer Spalte und den zugeörigen Frequenzen in der anderen und diese als .mat-file abspeichern. Dieses kann dann geladen werden und die Werte können genutzt werden. Dein Problem des Vergleichens würde ich so lösen, dass du die Differenz zwischen der Grundfrequenz und den gespeicherten Frequenzen berechnest und dir dann das Minimum der Beträge raussuchst (Kombination von FIND und MIN).
Im GUI dann:
Ich habe die Codes nicht getestet, sie müssten aber soweit so stimmen - hoffe ich...
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 16:45
Titel:
|
|
Sauber, danke für die schnelle Antwort, ich versuche mich direkt mal daran.
Bin heute doch schon weiter gekommen als gedacht.
Nächstes Ziel wird es sein mehrere Töne aus einer Tonleiter zu erkennen.
Da wirds schwieriger in der Hinsicht die passenden Maxima zu finden.
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:22
Titel:
|
|
Ich versuche grad die Matrix zu erstellen, der zickt aber rum weil Buchstaben und Zahlen nicht in eine Matrix gehören...
Was nu?
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:28
Titel:
|
|
Nimm statt einer Matrix ein Cell-Array. Funktioniert im Prinzip genauso, nur dass statt runden geschweifte Klammern genommen werden:
Ich hoffe das funktioniert so, wenn nicht: Bescheid sagen
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:30
Titel:
|
|
hm ich verstehe nicht genau wie ich diesen befehl nutzen soll?
Ich habe diese Werte schon in einer excel Datei wenn ich die importiere, teilt matlab die Spalten in zwei Tabellen.
Wo pack ich den Befehl hin? In ein M-File? Weil als Kommando klappt das nicht.
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:36
Titel:
|
|
Hab ein bissel probiert:
Die Schreibweise
klappt leider nicht weil die Töne wie folgt unterschieden werden:
A1 A a a' a'' a''
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:39
Titel:
|
|
Dann brauchst du diese Zeile gar nicht. Du hast dann also schon zwei Variablen, eine mit den Frequenzen und eine mit den Tonbezeichnungen? Das eine wird dann wahrscheinlich eine "normale" Matrix sein und das andere bereits ein Cell-Array?
Dann probiere mal folgendes:
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:43
Titel:
|
|
steve hat Folgendes geschrieben: |
Dann brauchst du diese Zeile gar nicht. Du hast dann also schon zwei Variablen, eine mit den Frequenzen und eine mit den Tonbezeichnungen? Das eine wird dann wahrscheinlich eine "normale" Matrix sein und das andere bereits ein Cell-Array?
|
Das ist korrekt, habe zwei Variablen eine mit Werten die andere mit den Namen.
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:46
Titel:
|
|
Dann bin ich mal gespannt ob der Code oben funktioniert...
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 17:55
Titel:
|
|
Zurück zu Punkt 2:
Klappt leider nicht und gibt folgende Fehlermeldung raus:
Die Funktion scheint nicht mit den Fließkommazahlen klar zu kommen.
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 10.07.2009, 18:12
Titel:
|
|
Welche Fehlermeldung gibt er denn aus, denn du hast nur gepostet wo der Fehler auftritt
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
char0n |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 10.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 7.6.0 (R2008a)
|
|
|
|
|
|
Verfasst am: 10.07.2009, 18:15
Titel:
|
|
ups...
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 10.07.2009, 19:29
Titel:
|
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|