WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

WAV- Vergleich auf Ähnlichkeit

 

Liza
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 18.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 09:49     Titel: WAV- Vergleich auf Ähnlichkeit
  Antworten mit Zitat      
Hallo ihr lieben,
vielleicht könnt ihr mit helfen. und zwar habe ich einen Ordner, in dem wav-Dateien liegen. Ich würde gerne eine weitere wav-Datei einlesen, die anschließend mit den schon vorhandenen (im Ordner) auf Ähnlichkeit überprüft wird. Diese Datei ist nicht identisch mit einem aus dem Ordner. Aber würde gerne eine Datei aus dem Ordner finden, die ähnlich ist. Das mit dem Einlesen und aussuchen hab ich in Matlab schon realisiert, allerdings fehlt mir das Knowhow oder die Idee, wie ich die Ähnlichkeitsüberprüfung von Wav-Dateien vornehmen kann.

Vielen Dank

Lisa
Private Nachricht senden Benutzer-Profile anzeigen


Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 06.07.2010, 10:18     Titel:
  Antworten mit Zitat      
Hallo,

ich nehm an deine wav-dateien wären spalten vektoren, die speicherst du zusammen in einer matrix(erste spalte erste datei...) zumbeispiel. oder cell wenn sie verschiedene grössen haben:
http://www.gomatlab.de/musikerkennu.....-fft-t12686,start,15.html

die letzte forschleife kannst du durch deinen vergleich ersetzen, mit der methode der fehlerquadrate zum beispiel.
dh deine test datei und vergleichsdatei werden voneinander abgezogen und quadrat davon, und wo das ergebnis am kleinsten ist, ist die ähnlichkeit am grössten.
Code:


for k=1:anzahldateien
   error(k)=0;
   for i=1:lenge_der_kleinen_datei
          error(k) = error(k)+(testdatei(i)-matrix(i,k))^2
   end
   k=k+1;
end

[minimun ind]=min(error);
disp(['ähnlich mit datei  ' num2str(ind)])

 


gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Liza
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 18.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 12:24     Titel:
  Antworten mit Zitat      
mh klappt noch nicht ganz, weil er immer "ähnlich mit Datei 1" ausspuckt. auch wenn ich genau die gleichen Geräusch einlade
Private Nachricht senden Benutzer-Profile anzeigen
 
_Fourier

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 12:43     Titel: a
  Antworten mit Zitat      
Geräusche vergleichen hmm es wird kompliziert, diese methode ist höchstwahrscheinlich unpassend. um welche geräusche gehts überhaupt,
sind das kontinuierliche töne wie ZB (ständiges pfeifen....) oder mit lücken wie ZB. Husten....??
 
Liza
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 18.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 14:01     Titel:
  Antworten mit Zitat      
Ich habs nun einigermaßen hinbekommen, aber kann man auch zwei anzeigen lassen? weil wenn zwei zahelen gleich sind sollte er sagen: das oder das?

es sind fahrgeräusche, also instationär..
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 06.07.2010, 14:26     Titel:
  Antworten mit Zitat      
du kannst eine schwelle festlegen und sagen wenn error<schwelle
dann ähnlich.

Code:

ind=find(error<schwelle)
 

_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Liza
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 18.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2010, 10:37     Titel:
  Antworten mit Zitat      
Klappt soweit, aber jetzt vergleicht der ja immer den ersten wert des einen geräusches mit dem ersten des anderes. Die Geräusche sind aber individuell aufgenommen , d.h. bei dem einen sind vielleicht 5 sekunden vorlauf wo kein Geräusch kommt. kann man das auch irgendwie ein wenig eleganter lösen und z.b. auf Pegel udn Frequenzen eingehen ?
Wäre echt super wenn jemand eine Idee hätte....
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 08.07.2010, 10:46     Titel:
  Antworten mit Zitat      
das ist natürlich nicht gut wenn pausen drin sind, es kann sein dass du gleiche geräusche vergleichst, es kommt aber zu schlechten ergebnisse weil sie zeitlich versetzt sind.

ich würde auch sagen du machst deine vergleiche im frequnezbereich. (fft)
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Liza
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 18.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.07.2010, 10:32     Titel:
  Antworten mit Zitat      
ja das hab ich mir auch schon gedacht, aber kann man dass dann auch so hinbekommen ,dass man das auch automatisieren kann? und man nicht per hand alles vergleichen muss ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 09.07.2010, 11:00     Titel:
  Antworten mit Zitat      
das geht schon, aber ffts musst du schon per hand machen, machst du antürlich in einer schleife, dass die ffts automatisch ZB als spaltenvektoren in einer matrix gespeichert werden. kleines beispiel:
Code:

fft_wav1=[1 2 3 4]';
fft_wav2=[4 5 6 7]';
fft_wav3=[5 8 9 3]';

matrix=[fft_wav1,fft_wav2,fft_wav3];  % mache ich jetzt mit hand

fft_wavtest=[1 1 1 1]';                       % zu testende wav
error=sum(matrix-repmat(fft_wavtest,1,size(matrix,2)).^2);
 

_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Liza
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 18.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 15:23     Titel:
  Antworten mit Zitat      
Sorry, dass ich jetzt erst antworte...

Ich hab das noch nicht so ganz verstanden... wieso sind die zahlen so verstreut?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.