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

Messdaten aus Frequenzbereich als Sprungantwort darstellen

 

EMKo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 10:22     Titel: Messdaten aus Frequenzbereich als Sprungantwort darstellen
  Antworten mit Zitat      
Hallo zusammen

Ich habe Messdaten meines Systems als Frequenzgang, also Amplitude, Phase und Frequenz seperat gespeichert.

Nun möchte ich den Frequenzgang in Zeitbereich umwandeln, spricht Sprungantwort darstellen. Ich weiss leider keine Function die ich verwenden kann.

Bis jetzt konnte ich meine Messdaten durch
Code:
h = amplitude .* exp(i .* phase);
sys = frd(h,frequenz);
bode(sys)

als Bode-Diagramm darstellen. Aber functions wie "step" kann ich leider nicht auf frd-Modell anwenden. Gibt es anderen Methode, wie ich den Frequenzbereich in Zeitbereich umwandeln kann, ohne den Übertragungsfunktion (Gleichung) zu kennen?

mfg
EMKo


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 10.07.2013, 12:27     Titel:
  Antworten mit Zitat      
Ja, z.B. in dem man die Daten (Amplitude und Phase) mittels
Code:
in den Zeitbereich zurücktransformiert.


So fern du dir auch wirklich die Impulsantwort (=Frequenzantwort im Freq.bereich) im Bodediagramm darstellst. Die Impulsantwort ist ja die Ableitung der Sprungantwort. Hättest nun 2 Möglichkeiten, die Sprungantwort zu erhalten.

1) Impulsantwort im Zeitbereich integrieren
2) Faltung eines Eingangsprungs (der auf das System gegeben werden soll) mit der Impulsantwort
Private Nachricht senden Benutzer-Profile anzeigen
 
EMKo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2013, 15:20     Titel:
  Antworten mit Zitat      
Hallo DSP

Ich habe versucht mit ifft auszurechnen, aber ich bekommen immer komplexe Zahlen heraus. Sollte es in Zeitbereich nach der Rücktransformation nur noch rellen Zahlen heraus kommen?

Kannst du mir bitte ein Beispiel geben oder ein link wie man ifft richtig benutzt? Die Hilfe in Matlab fand ich leider nicht sehr informativ.

Vielen Dank

EMKo
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 12.07.2013, 16:05     Titel:
  Antworten mit Zitat      
Poste doch mal deinen bisherigen Ansatz. Ich vermute mal, du hast lediglich Amplitude und Phase aus dem positiven Frequenzbereich verwendet. FFT und ifft arbeiten aber in folgendem Bereich:

Code:

fs = ... % Abtatsfrequenz
-fs/2...0...+(fs/2 - df) [Hz]

df = fs/nfft % Auflösung des Spektrums
nfft = ... % Anzahl Messwerte in FFT
 


Aus der Doku zu ifft

Zitat:

ifft tests X to see whether vectors in X along the active dimension are conjugate symmetric. If so, the computation is faster and the output is real. An N-element vector x is conjugate symmetric if x(i) = conj(x(mod(N-i+1,N)+1)) for each element of x.


Deshalb ist der Output auch complex. Du musst den konjugiert komplexen Teil bilden und mit den anderen Daten zusammen packen. Zu dem Thema gibt es hier auch Threads Wink

Oder du nutzt folgende Option:

Code:
y = ifft(Y,nfft,'symmetric');
Private Nachricht senden Benutzer-Profile anzeigen
 
EMKo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2013, 10:19     Titel:
  Antworten mit Zitat      
Hallo zusammen

Vielen Dank für das Beipiel DSP!! Hat mich jetzt weiter geholfen.

Dennoch habe ich noch ein paar Fragen:

Ich habe als Messungdaten seperat: 'Amplitude', 'Phase' und 'Frequenz'
Nach direkten plotten sieht meine Übertragungsfunktion wie 'Messung.png' aus (siehe Anhang). Es ist nährungsweise ein Tiefpass, die Phase hat eine Offset von 180°, ist aber durch das Messverfahren verursacht wurden.

Bei einen Tiefpass erwarte ich in Zeitbereich eigentlich ein Sprunganwort ohne Überschwingung, aber das, was durch die ifft drauskommt ist für mich unverständlich. Ich habe das Ergebnis nochmal integriert, weil ich dachte vielleicht zeigt er nach ifft ein Impulsanwort statt Sprunganwort, aber dennoch sieht das Signal nicht verständlich aus.

Hier ist das Code:
Code:
H = amplitude .* exp(1i .* phase);

h = ifft(H,length(frequenz),'symmetric');
k(1) = h(1);

for j = 1:length(h)-1
    k(j+1) = k(j) + trapz(h(j:j+1));    
end


Vielleicht weiss jemand, wo mein Problem liegt

Gruß
EMKo

Integration Zeitbreich.png
 Beschreibung:

Download
 Dateiname:  Integration Zeitbreich.png
 Dateigröße:  3.18 KB
 Heruntergeladen:  1385 mal
Zeitbreich.png
 Beschreibung:
Zeitbereich nach ifft

Download
 Dateiname:  Zeitbreich.png
 Dateigröße:  3.62 KB
 Heruntergeladen:  1400 mal
Messung.png
 Beschreibung:
Messdaten in Frequenzbereich

Download
 Dateiname:  Messung.png
 Dateigröße:  33.89 KB
 Heruntergeladen:  1436 mal
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 15.07.2013, 11:08     Titel:
  Antworten mit Zitat      
Ist es möglich die Daten hier als *.mat file mal anzuhängen (müssen vorher gepackt werden). Wieviele Messwerte hast du denn?
Private Nachricht senden Benutzer-Profile anzeigen
 
EMKo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2013, 12:24     Titel:
  Antworten mit Zitat      
Hallo DSP

in .mat sind 4 Werte vorhanden:

ampline := Amplitude lineare Skalierung
amplitude := Amplitude in dB
phase
frequenz
H := ampline * exp(i * phase)

Ich habe von 0,1 Hz bis 100 Hz insgesamt 350 Messpunkten

Gruß
EMKo

frequenzgang auswerteelektronik2.rar
 Beschreibung:

Download
 Dateiname:  frequenzgang auswerteelektronik2.rar
 Dateigröße:  15.17 KB
 Heruntergeladen:  583 mal
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 16.07.2013, 10:58     Titel:
  Antworten mit Zitat      
Ich habe mal ein paar Sachen versucht:

Code:

clear;
load frequenzgang_auswerteelektronik2.mat;
% FRD Modell aus Messdaten erstellen
sys = frd(H,frequenz);

Fs = 2*(frequenz(end)); % Abtastfrequenz
nfft = 2^10; % Anzahl Messwerte
% neuer Frequenzvektor mit äquidistanter Schrittweite
freqi = linspace(frequenz(1),frequenz(end),nfft);
% FRD Modell linear interpolieren
sys_interp = interp(sys,freqi);
% interpolierte Messadten
[response,freq,Ts] = frdata(sys_interp,'v');

figure(1)
k = length(response);
mag = abs(response(1:k));  
% Skalierung
mag_dB = 20*log10(mag + eps);
% Frequenzantwort darstellen
semilogx(freq,mag_dB);grid on;
xlabel('Frequenz in Hz');
ylabel('Magnitude dB');

% Impulsantwort
nfft = 2^nextpow2(response);
h1 = ifft(response,nfft,'symmetric');
%h2 = ifft(H2,nfft,'symmetric');
figure(2)
% Impulsantwort mit Tiefpass filtern
[b,a] = butter(9,30/(Fs/2),'low');
h1_filt = filter(b,a,h1);
% Impulsantwort darstellen
plot(h1); grid on; hold on;
plot(h1_filt,'r--');
legend('Impulsantwort roh','Impuls gefiltert');
xlabel('n-ter Messwert');
ylabel('Amplitude');

% Sprungantwort
sigma = ones(nfft,1); % Einheitssprung
% Faltung von Sprungfunktion mit Impulsantwort
sprung1 = conv(sigma,h1(1:end));
% erneutes Aufschwingen des Impuls am Ende abschneiden
sprung2 = conv(sigma,h1_filt(1:nfft/2));
figure(3)
plot(sprung1);hold on;
plot(sprung2,'r--');grid on;
legend('Sprungantwort roh','Sprungantwort aus Impuls gefiltert');
xlabel('n-ter Messwert');
ylabel('Amplitude');
 


Allerdings ist das auch kein wirklich gutes Ergebnis. Dein Frequenzvektor geht aber nicht nur bis 100 Hz Wink. Außerdem ist die Schrittweite (df) variabel, somit wohl auch deine Abtastfrequenz? Das bringt hier wohl einige Probleme mit sich, weshalb ich das FRD Modell erstmal mit interpolierten Daten neu erstellt habe.

Das System kann aber entgegegen deiner Vermutung niemals ein Verhalten ohne Überschwingen aufweisen. Das zeigt schon das Bodediagramm an Hand des welligen Anfangsbereichs. Da sind deutlich zwei Überhöhungen zu sehen. Ebenfalls solltest du Systeme zwischen FIR und IIR unterscheiden...beide können Tiefpassverhalten haben. Ein FIR schwingt niemals, ein IIR kann das sehr wohl.

Ich vermute mal, dass hier mit den Messdaten nicht mehr viel möglich ist. Zumal eine Filterung der Daten ja auch immer das zu untersuchende Systemverhalten verändert. Kannst du keine Messung mit einer konstanter Abtastfrequenz vornehmen? Außerdem wirst du wohl ein Modell deiner Daten erstellen müssen...z.B. ARX oder ARMAX Modell, dass an den Verlauf der Impulsantwort angepasst wird. Daraus ließe sich dann sicherlich eine bessere Sprungantwort generieren.

Wie läuft denn die Messung überhaupt ab?
Private Nachricht senden Benutzer-Profile anzeigen
 
EMKo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2013, 16:35     Titel:
  Antworten mit Zitat      
Hallo DSP

Vielen Dank für deine Interesse! Ich werde heute leider keine Zeit mehr haben, deine Code nachzuvollziehen.

Das Messverfahren sieht folgende Maßen aus:

Ich erzeuge mit einem Signalanalysator einen Sweep von 0.1 Hz bis 1 kHz (ich habe bis 1 kHz gemessen, aber wieder was weggeschnitten, deshalb kam ich bei obere Frequenz bis ca. 300 Hz).
Dabei setzt der Signalanalysator bestimmt viele Punkte pro Dekade (z.B. 100 Samples/Dekade). Deshalb ist es auch schwerig mit dem Abtastfrequenz, weil sie in diesen Fall nicht konstant ist. Das war mir vorher auch nicht klar...

Das Code werde ich auf jeden Fall noch genauer anschauen. Danke!

Gruß
EMKo
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.07.2013, 09:29     Titel:
  Antworten mit Zitat      
Das ist aber schon mal das Grundproblem. Ein chirp Signal wird heute i.d.R eher selten zur Analyse des Frequenzgangs eines Systems verwendet. Ein Impuls fouriertransformiert hat über den kompletten Frequenzbereich die Amplitude 1 bzw. 0 dB. Somit sieht man nun sehr gut, wo das System den Impuls als Eingangssignal abschwächt oder verstärkt. Ein chirp Signal hat das nur in einem begrenzten Frequenzbereich und dort auch längst nicht eine wirklich konstante Amplitude wie der Impuls. Früher hat man zwar chirp oder sweep Generatoren zur Erstellung eines Frequenzgang verwendet, was aber vor allem daran liegt, dass ein Impuls mit analoger Technik nur schwer nachzubilden war. In der digitalen Signalverabeitung ist das heute überhaupt kein Problem mehr.

Handelt es sich denn um ein reales System oder ist das hier ohnehin theoretisch Natur? Wenn die Möglichkeit besteht, rate ich dir, die Frequenzantwort an Hand eines Dirac-Impulses als Eingangssignal zu erstellen. Kannst du das Eingangssignal mit aufzeichnen?
Private Nachricht senden Benutzer-Profile anzeigen
 
EMKo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2013, 12:49     Titel:
  Antworten mit Zitat      
Hallo DSP

Es handelt sich um ein reales System. Die mechanische Quelle kann nur harmonisch betrieben werden.

Gruß
EMKo
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.07.2013, 13:14     Titel:
  Antworten mit Zitat      
Dann würde ich das Eingangsignal ebenfalls aufzeichnen und nun mit einem Schätzverfahren ein ARX oder ARMAX Modell erstellen.

Beide Modelle gibt es in Matlab und auch hier im Forum findest du einige Threads, wie man aus den Messdaten (Eingangs- und Ausgangssignal) ein solches Modell erstellt/berechnen lässt.
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 - 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.