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

Spektrogramm

 

Atmos_kk
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2011, 13:34     Titel: Spektrogramm
  Antworten mit Zitat      
Hallo zusammen,

es geht darum, dass ich die Funktion Spektrogramm nicht besitze aber ich exakt die berechnungen und Darstellungen brauche. Hat jemand eine Idee oder vielleicht sogar ein Skript für die Berechnung. Die Darstellung lässt sich ja auch anders ermöglichen.

Greetz
Private Nachricht senden Benutzer-Profile anzeigen


Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 18.07.2011, 18:52     Titel:
  Antworten mit Zitat      
Hi Atmos,

Ich habe kein Beispiel-File, aber du kannst das Spektrogramm mit den beiden Funktionen

Code:


generieren.

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 05:44     Titel:
  Antworten mit Zitat      
Ah das doch mal ne Aussage. Vielen Dank.
Allerdings stehe ich jetzt vor dem Problem, dass beim Spektrogramm ja nicht einfach eine FFT durchgeführt wird sondern eine STFT (Short-time).
Bei dieser benötige ich allerdings eine Fensterung und habe mich da für Hanning entschieden. Allerdings ist die Fensterung wieder Teil der Toolbox und ich bin mir nicht sicher wie ich das lösen soll. Also die Fensterung als Graph zu erstellen ist kein Problem allerding hab ich keine Ahnung wie ich sowas in eine Programmierung übergeben muss.
Falls mir da auch noch einer weiterhelfen kann wäre das super.

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 19.07.2011, 06:36     Titel:
  Antworten mit Zitat      
Moin Atmos_kk,

vielleicht hilft Dir die Suche "hanning" und "waterfall" weiter. Waterfall sieht ein bischen anders aus als Spectrum-doch sehr ähnlich. Wenn Dir das hilft hätte ich ein Beispiel, das ich aber nicht prüfen kann, weil ich die SPT nicht habe. Muß sie umständlich abtippen, da ein Transfer z.Zt. nicht möglich ist.
Kannst dich ja melden, wenn es Dir hilft.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 19.07.2011, 07:19     Titel:
  Antworten mit Zitat      
Bitte prüfen:

http://www.gomatlab.de/die-nutzung-.....es-geld-kosten-t9075.html

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 08:17     Titel:
  Antworten mit Zitat      
Hallo Hubertus,
schick die Datei ruhig mal durch. Schaden kann es ja nicht sich das mal anzusehen. Vielleicht hilft es mir irgendwie.
Das Problem liegt halt wirklich da, dass ich die Signal Processing Toolbox z.Z. nicht habe und mir meine FH nichtmal eine Matlabversion besorgen kann. Deshalb bin ich nun in meiner Praxisphase auf die Lizenz meines Arbeitgebers angewiesen und muss ihn irgendwie davon überzeugen, dass die Toolbox sinn macht.
Falls sonst noch jemand eine Idee hat wie man Hanning besser selber erstellen kann freu ich mich über jeden Beitrag.

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 19.07.2011, 08:52     Titel:
  Antworten mit Zitat      
Ich habe mir die Funktion noch einmal angesehen. Leider habe ich die dazugehörige Funktion "Spectrogram.m" nicht mehr. Es handelt sich dabei aber nicht um die Funktion aus der SPT sondern um eine Funktion, die Du auch unter Google zahlreich findest. Ich habe mir sagen lassen, dass man ein Spectrogramm auch selber schreiben kann, ohne mit der Matlab SPT zu kollidieren.

Den Einwand von Andreas Goser kann ich gut verstehen. Allerdings lebt das Programm auch von den zahlreichen Funktionen, die frei zur Verfügung stehen - siehe Matlab Central usw. Um einen ersten Eindruck zu erzielen und wenigestens ein dikutables Ergebnis vorzulegen, kann so eine Funktion schon hilfreich sein. Man wird sehr schnell feststellen, dass die dazugehörige Toolbox von Nöten ist, da andere frei verfügbare Funktionen überwiegend auf diese Toolboxen zurückgreifen.

Edit:

Hilft das weiter?

http://www.mathworks.se/matlabcentr.....plotspectrogram/all_files
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.07.2011, 13:01     Titel:
  Antworten mit Zitat      
Ich hoffe Andreas ist jetzt nicht sauer...

Hier eine Funktion für 3 verschiedene Windowtypen. Ich habe sie mit den Matlab Windows verglichen, da ich die Toolbax habe. Sie sind identisch.

Code:

function [output] = Fenster(window_size,window_typ) ;

N = window_size; % Fensterlänge
output = zeros(N,1); % Init

if (window_typ ~= 0)&&(window_typ ~= 1)&&(window_typ ~= 2)
    disp('falsches Window ausgewählt: 0 = Hann, 1 = Hamming, 2 = Blackman');
else
    if mod(N,2)==0 % N gerade
        m = fix(N/2);
        n = m;
    else % N ungerade
        m = fix((N/2))+1;
        n = m-1;
    end
   
    window = zeros(m,1); % Init

    for i = 0:m
        if(window_typ == 0)
            window(i+1) = 0.54 - 0.46*cos(2*pi*i/(N-1));% Hamming Window
        elseif(window_typ == 1)
            window(i+1) = 0.50 - 0.50*cos(2*pi*i/(N-1));% Hann Window
        else
            window(i+1) = 0.42 - 0.50*cos(2*pi*i/(N-1))+ 0.08*cos(4*pi*i/(N-1));% Blackman Window
        end
    end
end
output = [window(1:m); fliplr(window(1:n)')'];
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 19.07.2011, 13:19     Titel:
  Antworten mit Zitat      
Sauer ist nicht der Punkt. Schon gar nicht auf die Personen die hier aktiv sind oder fragen. Ich kann nur nicht verstehen warum jemand diesen Aufwand betreiben muss. Warum werden Endnutzern Steine in den Weg gelegt wo alle Hochschulen diese Toolboxes haben? Das würde ich gerne verstehen und helfen es auszuräumen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 13:21     Titel:
  Antworten mit Zitat      
Moin DSP,

sieht ja nicht schlecht aus allerdings verstehe ich kaum ein Wort! Kannst du eventuell noch ein paar Kommentare mit einfügen und was man machen muss um es zu nutzen?!

Bin noch nicht so lange dabei mit Matlab.


Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.07.2011, 13:31     Titel:
  Antworten mit Zitat      
einfach nur die Funktion in deinem m-file aufrufen:

Code:

my_window = Fenster(100,0) % erstellt dir ein Hamming Fenster mit der Länge 100
% wenn man die Toolbox besitzt, wäre das identisch mit:
my_window = hamming(100);
 


@Andreas: Das ist ein weites Feld...da bin ich raus. Die Diskussion wäre endlos Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.07.2011, 13:40     Titel:
  Antworten mit Zitat      
Was vergessen:

Du kopierst dir die Zeilen und speicherst sie als m-file mit dem Namen der Funktion, also Fenster.m ab. Jetzt kannst du sie wie oben angegeben immer so aufrufen. Der erste Paramter bestimmt die Länge deines Fensters und der zweite den Typ (Hamming, Hann oder Blackman).
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 13:42     Titel:
  Antworten mit Zitat      
Also jetzt hast du mich aber völlig durcheinander gebracht.
Wenn ich den Code in eine m-file lade und starte kommt erstmal windowsize undefined.
Wenn ich das korrigiere kommt windowtyp undefined.
Wenn ich dann deinen nächsten code mit eingabe läuft garnichts mehr!
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 13:49     Titel:
  Antworten mit Zitat      
Alles klar. Jetzt hab ichs. Find ich gut.

Vielen Dank erstmal.


Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 13:52     Titel:
  Antworten mit Zitat      
Kurze Korrektur des Codes:
Code:


function [output] = Fenster(window_size,window_typ) ;

N = window_size; % Fensterlänge
output = zeros(N,1); % Init

if (window_typ ~= 0)&&(window_typ ~= 1)&&(window_typ ~= 2)
    disp('falsches Window ausgewählt: 0 = Hamming, 1 = Hann, 2 = Blackman');
else
    if mod(N,2)==0 % N gerade
        m = fix(N/2);
        n = m;
    else % N ungerade
        m = fix((N/2))+1;
        n = m-1;
    end
   
    window = zeros(m,1); % Init

    for i = 0:m
        if(window_typ == 0)
            window(i+1) = 0.54 - 0.46*cos(2*pi*i/(N-1));% Hamming Window
        elseif(window_typ == 1)
            window(i+1) = 0.50 - 0.50*cos(2*pi*i/(N-1));% Hann Window
        else
            window(i+1) = 0.42 - 0.50*cos(2*pi*i/(N-1))+ 0.08*cos(4*pi*i/(N-1));% Blackman Window
        end
    end
end
output = [window(1:m); fliplr(window(1:n)')'];

 


Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3  Weiter

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 - 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.