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

Berechnung von Transferfunktion (tf Funktion)

 

Grünschnabel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 01.10.13
Wohnort: ---
Version: MATLAB R2013a
     Beitrag Verfasst am: 27.05.2014, 22:15     Titel: Berechnung von Transferfunktion (tf Funktion)
  Antworten mit Zitat      
Hallo Zusammen,
könntet Ihr mir vielleicht Ratschläge zur Berechnung von Transferfunktionen in Matlab geben?!?

Eine Transferfunktion (TF) ist das Verhältnis zwischen Output und Input eines Signals oder Zeitreihe. Matlab hat hierfür die Funktion tf, allerdings werden in dieser Matlabfunktion der Output bzw. Input durch Polynome (Gleichungen) beschrieben.

Da in meinem Beispiel keine mathematische Beschreibung der Zeitreihe vorliegt, wollte ich direkt mit den Werten dieser Zeitreihen rechnen. Die Werte werden eingelesen und in den Matrizen Input und Output gespeichert.

Für die Berechnung der Transferfunktionen habe ich mir folgenden kleinen Code geschrieben:
Code:

% Input
Input = [   0 3 -2 4 -5 5 -4 0.002 -6 0];
Output = [  0 4  5 2  4 5  2     5  1 0;
            0 2  5 1  6 3  5     9  2 0];

[NRows, NCols] = size (Output)
TF = zeros (NRows, NCols);
Limit1 = 0.02;
Limit2 = -0.02;

% % 1. Ansatz (ganz einfach TF = Output / Input
% for i = 1:NRows
%     TF( i , : ) = Output( i , : ) ./ Input;
% end
   
% 2. Ansatz mit "manueller Anpassung" der Inputwerte
for i = 1:NRows
    for j = 1:NCols

        if (Input(1,j) == 0)   % Wenn Input = 0 wird TF = 0 gesetzt
         
            TF(i,j)= 0;

        elseif (Input(1,j) <= Limit1) && (Input(1,j) > Limit2) % Wenn Input kleiner als ein Limit, wird der Input auf ein Limit festgesetzt (manipuliert)  

            Input(1,j) = Limit1;
            TF(i,j) = Output(i,j) / Input (1,j) ;

        else

            TF(i,j) = Output(i,j) / Input (1,j) ;

        end

    end
end
   
figure
plot (TF (1,:))
hold all
plot (TF(2,:))
 


Wenn Ihr den Code einmal laufen lasst, wird die Transferfunktion im Plot dargestellt und es zeigen sich Spannungskonzentrationen aufgrund des Inputs. Rein mathematisch gesehen ist das Ergebnis richtig, obwohl die Spannungskonzentrationen meiner Ansicht nach keinen Sinn ergeben.

Ich hatte schon an Filterfunktionen gedacht, bin mir aber nicht sicher ob das zielführend wäre.

Habt Ihr eine Idee wie ich mit den Werten der Input und Output Matrizen eine vernünftige Transferfunktion bilden kann?!? Question Crying or Very sad

Vielen Dank im Voraus.
Der Grünschnabel.
Private Nachricht senden Benutzer-Profile anzeigen


SkyRazor
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 07.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2014, 15:30     Titel:
  Antworten mit Zitat      
hallo,

du kannst die Dokumente über tfestimate Funktion gucken.
Viel Glück!

PS: zu wenige Eingangs- und Ausgangsdateien machen fast kein sinn, um die TF zu kriegen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Grünschnabel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 01.10.13
Wohnort: ---
Version: MATLAB R2013a
     Beitrag Verfasst am: 03.06.2014, 15:50     Titel:
  Antworten mit Zitat      
Hallo,
vielen Dank für Deine Antwort SkyRazor! Dein Tipp war gut, die Funktion tfestimate müsste mein Problem lösen.
Jetzt stehe ich aber vor dem nächsten Problem, den in der Dokumentation steht:
Zitat:
The transfer function is the quotient of the cross power spectral density (Pyx) of x and y and the power spectral density (Pxx) of x.

So wie ich das jetzt der Dokumentation entnehme, muss ich den Output mit der Funktion cpsd (Cross power spectral density) und den Input mit der Funktion dspdata.psd (Power spectral density) in den Frequenzbereich überführen.

Die beiden Signale für den Input und den Output (siehe Anhang), besitzen sowohl positive als auch negative Werte und sind im Zeitbereich!

Aber wie gehe ich da vor?!? Leider habe ich nur sehr wenig Erfahrung im Umgang mit "Signalverarbeitung". Sorry...
Code:

Output = load ('Output.txt');  
Input = load ('Input.txt');

Hpsd = dspdata.psd(Input);

 

Fehlermeldung in Matlab:
Zitat:
Invalid value for Data. Data must be a vector or matrix containing real, positive values.


Daher meine Frage, wie kann ich die Funktion:
dspdata.psd und cpsd
für die 2 Zeitreihen (Input, Output) mit positiven als auch negativen Werten anwenden, um im Anschluss die Funktion tfestimate nutzen zu können?

Sorry, für meine Unwissenheit. Crying or Very sad
Der Grünschnabel

Output.txt
 Beschreibung:
Output-Zeitreihe mit positiven und negativen Werten. Vektor (1 x 1500)

Download
 Dateiname:  Output.txt
 Dateigröße:  25.6 KB
 Heruntergeladen:  389 mal
Input.txt
 Beschreibung:
Input-Zeitreihe mit positiven und negativen Werten. Vektor (1 x 1500)

Download
 Dateiname:  Input.txt
 Dateigröße:  27.12 KB
 Heruntergeladen:  346 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Grünschnabel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 01.10.13
Wohnort: ---
Version: MATLAB R2013a
     Beitrag Verfasst am: 04.06.2014, 10:28     Titel:
  Antworten mit Zitat      
Hallo Zusammen,
wie schon oben beschrieben, möchte ich aus einer Zeitreihe eine PSD ableiten um später die Funktion tfestimate verwenden zu können. Ich habe erste Erfolge verzeichnet, benötige dennoch euren Ratschlag.

Mit folgendem Code berechne ich mir meine PSD für meinen Input:

Code:

Input = load ('Input.txt')';

Fs = 100;              
nfft = 2^nextpow2(length(Input));
Pxx = abs(fft(Input,nfft)).^2/length(Input)/Fs;
Hpsd = dspdata.psd(Pxx(1:length(Pxx)/2),'SpectrumType','Onesided')
% Hpsd = dspdata.psd(Pxx(1:length(Pxx)/2),'CenterDC',500)
% Hpsd = dspdata.psd(Pxx(1:length(Pxx)/2),'Fs',Fs);
figure (3)
plot(Hpsd);
 


Das Ergebnis des gezeigten Codes ist im Anhang unter "Matlab_Solution.fig" zu finden. Wenn ich diese Lösung mit der Lösung von LabView vergleiche (LabViwe_DB.fig), ist zwar der Verlauf ähnlich aber die Werten unterscheiden sich. Könnt Ihr mir da weiterhelfen?!?
Und wie kann ich die PSD in "lineare Einheiten" (so die Bezeichnung in LabView) in Matlab erzeugen? Das Ergebnis der "linearen Einheiten" findet Ihr in "LabView_Linear.fig"

Vielen Dank im Voraus und über Hinweise und Eure Hilfe wäre ich Euch sehr dankbar... Embarassed Rolling Eyes Question
Der Grünschnabel

Input.txt
 Beschreibung:
Der Input ist ein Beschleunigungsverlauf im Zeitbereich.

Download
 Dateiname:  Input.txt
 Dateigröße:  27.12 KB
 Heruntergeladen:  375 mal
LabBView_Linear.fig
 Beschreibung:
LabView Lösung mit linearen Einheiten.

Download
 Dateiname:  LabBView_Linear.fig
 Dateigröße:  11.23 KB
 Heruntergeladen:  357 mal
LabView_DB.fig
 Beschreibung:
LabView Lösung zur Gegenüberstellung (Einheiten in DB)

Download
 Dateiname:  LabView_DB.fig
 Dateigröße:  11.1 KB
 Heruntergeladen:  380 mal
Matlab_Solution.fig
 Beschreibung:
Meine Lösung für die PSD die ich mit oben gezeigten Code erzeuge. (Einheiten in DB)

Download
 Dateiname:  Matlab_Solution.fig
 Dateigröße:  15.75 KB
 Heruntergeladen:  336 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Grünschnabel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 01.10.13
Wohnort: ---
Version: MATLAB R2013a
     Beitrag Verfasst am: 04.06.2014, 18:25     Titel:
  Antworten mit Zitat      
Vielen Dank! Es haben sich alle Fragen gelöst. Cool Exclamation
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.