Forum: Digitale Signalverarbeitung / DSP / Machine Learning Matlab Bodeplot und Messwerte


von Matthias H. (streno)


Lesenswert?

Hallo zusammen,

ich habe folgendes Problem.

Ich habe eine Übertraungsfunktion in Matlab und ich habe eine 
Übertragungsfunktion gemessen. Die gemessene ÜF lese ich mit csv-read 
ein und kann diese ganz normal mit dem befehl plot anzeigen. Die 
berechnete ÜF aus Matlab zeige ich mit "bodeplot" an.

Es gibt meiner Meinung nach 2 Möglichkeiten:

1. Ich schreibe die berechnete ÜF in um: G(s)->G(i*omega) und plotte den 
Absolutwert. Allerdings weiß ich nicht wie das geht.

2. Ich plotte die Messwerte in das Bodeplot. Auch hier weiß ich nicht 
wie das geht..

Hat vielleicht jemand einen Tipp für mich?

Danke und viele Grüße
Matthias

von ich (Gast)


Lesenswert?

Schon mal das kleine Fragezeichen oben in Matlab angeklickt?
Gurgel: Plot Bodediagramm oder Plot Messdaten Bodediagramm ?

von Streno (Gast)


Lesenswert?

ich schrieb:
> Schon mal das kleine Fragezeichen oben in Matlab angeklickt?
> Gurgel: Plot Bodediagramm oder Plot Messdaten Bodediagramm ?

Wie ich die Messwerte mit semilogx Platte weiß ich Ja, aber wie bekomme 
ich beide in ein Diagramm?

von Daniel V. (voda) Benutzerseite


Lesenswert?

ich schrieb:
> Schon mal das kleine Fragezeichen oben in Matlab angeklickt?
> Gurgel: Plot Bodediagramm oder Plot Messdaten Bodediagramm ?

Mein Gott, absolut unnötig. Du hast denn Sinn eines Forums wohl nicht 
verstanden.

Streno schrieb:
> Wie ich die Messwerte mit semilogx Platte weiß ich Ja, aber wie bekomme
> ich beide in ein Diagramm?

Probiere mal den Befehl:
1
figure(1);
2
[DATEN_1]
3
hold on;
4
[DATEN_2]

Vllt würde es aber auch mehr Sinn machen, Deinen Code hier zu posten.
Des Weiteren sollte Dir dies helfen:

http://daten.schule.at/dl/Uebertragungsfunktionen_unter_MATLAB.pdf

Gruß
Daniel

: Bearbeitet durch User
von Matthias H. (streno)


Lesenswert?

Ich habe es bisher erfolglos so probiert:
1
figure(1)
2
bodeplot(G1,'r',opts)
3
grid
4
hold on
5
subplot(2,1,1)
6
semilogx(data1(:,1),data1(:,2))
7
subplot(2,1,2)
8
semilogx(data1(:,1),data1(:,3))
9
hold off

Es wird immer nur das bodediagramm angezeigt nicht meine Daten. Auch mit 
"plot" anstatt "semilogx" war ich erfolglos

: Bearbeitet durch User
von donvido (Gast)


Lesenswert?

1
[mag,phase,wout]=bode(Gs);
2
w_Gs=wout/2/pi;
3
mag_Gs=20*log10(mag);
4
plot(w_Gs,mag_Gs(1,:)

von Detlef _. (detlef_a)


Lesenswert?

donvido schrieb:
> w_Gs=wout/2/pi;

Sehr gefährlich, der hack. Die Division ist nicht assoziativ.
(8/4)/2 != 8/(4/2).

Cheers
Detlef

von Tobias F. (tobif)


Lesenswert?

Du kannst auch den umgekehrten Weg gehen und aus deinen Messdaten ein 
Matlab LTI-Modell machen:
1
ltisys = frd(frequencies,complex_response,'FrequencyUnit','Hz'); % convert to MATLAB model
2
bode(ltisys, G1);                                               % make Bode plot
Das hat den Vorteil dass du mit dem Modell dann in Matlab weiterechnen 
kannst, d.h. es mit Transferfunktionen multiplizieren oder durch sie 
dividieren um zB Komponenten heraus oder dazu zu rechnen. Außerdem 
kannst du dann zB das pidtool benutzen um PID-Regler auszulegen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.