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

Matrix Plotten

 

Lars_1991
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2019, 19:05     Titel: Matrix Plotten
  Antworten mit Zitat      
Hallo liebe Forum-Mitglieder,

ich möchte gern aus einer Diagonalmatrix, Werte plotten. Mein Algorithmus gibt mir für jeden Berechnungsschritt eine Matrix zurück. Auf der Hauptdiagonalen stehen die Werte für meine Zustände [Position X Position Y Heading Geschwindigkeit Drehrate]. Mich interessiert wie sich diese über alle Filterschritte verändern.
In der Hilfe habe ich folgendes gefunden:
https://de.mathworks.com/help/matlab/ref/plotmatrix.html

Jedoch weiß ich nicht wie ich das auf meine Matrix anwenden soll. Vllt kann mir jemand helfen oder hat eine gute Idee.
Ich wünsche einen schönen Abend

Liebe Grüße
Lars

P_Matrix.png
 Beschreibung:

Download
 Dateiname:  P_Matrix.png
 Dateigröße:  8.34 KB
 Heruntergeladen:  217 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2019, 22:27     Titel:
  Antworten mit Zitat      
Hallo,

Vorschlag:
- aus jeder Matrix mit diag die Diagonale extrahieren.
- die entstehenden Vektoren zu einer Matrix zusammenfassen.
- die Matrix mit plot visualisieren.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lars_1991
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2019, 23:12     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja diese Idee hatte ich als Alternative sofern es keinen Befehl dafür gibt.
Kann ich über
Code:
P_Matrix_neu = diag(P_k)
das herauslösen?
Das müsste ich wahrscheinlich in den Algorithmus legen, sodass er es bei jedem Filterschritt macht oder?
Code:
for k = 1:length(M_z)
    % Berechnung Kalman Gain
    S = J_H_1 * P_k * J_H_1' + R_1;
    K = (P_k * J_H_1')/S;
    % Berechnung der Schätzung
    z = M_z(k,:);
    y = z' - H(x_k);                                
    % Berechnung der Innovation
    x_k = x_k + (K * y);
    % Speichere Schätzung
    s_x_e(:,k) = x_k;
    % Speichere Messung
    s_z_L(:,k) = z;
    % Berechnung der nächsten Fehlerkovarianz
    P_k = (I - (K * J_H_1)) * P_k;
   
    % Vorhersage Zustand und Fehlerkovarianz für nächsten Zeitschritt
    x_k = D_A_Kurve(x_k);
    % speichere Vorhersage
    s_x_p(:,k) = x_k;
    P_k = J_D_A_Kurve(x_k) * P_k * J_D_A_Kurve(x_k)' + Q;
end


Würde mich noch über eine Antwort freuen.

Lg Lars
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2019, 23:46     Titel:
  Antworten mit Zitat      
Hallo,

ja, und ja. Vor dem end z.B. folgendes einfügen:
Code:
P_Matrix_neu(:,k) = diag(P_k);


Das geht davon aus, dass alle P_k gleich groß sind.

Dann
Code:
plot(P_Matrix_neu')


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lars_1991
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2019, 23:49     Titel:
  Antworten mit Zitat      
Hallo Harald,

habe es so gemacht. Danke für die Hilfe!

Code:
P_k = J_D_A_Kurve(x_k) * P_k * J_D_A_Kurve(x_k)' + Q;
    % Speichere Fehlerkovarianz
    s_P_k(:,k) = diag(P_k);


Code:
figure('Name','Fehlerkovarianz')

plot((1:n),M_Fehlerkov(1,:))
hold on
plot((1:n),M_Fehlerkov(2,:))
plot((1:n),M_Fehlerkov(3,:))
plot((1:n),M_Fehlerkov(4,:))
plot((1:n),M_Fehlerkov(5,:))
grid on
hold off
xlabel("Filterschitte n")
legend('X','Y','phi','v','psi')


Ich wünsche eine gute Nacht.

Lg lars
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2019, 23:56     Titel:
  Antworten mit Zitat      
Hallo,

das Plotten kannst du so einfacher haben:
Code:
plot((1:n),M_Fehlerkov)


Ebenfalls eine gute Nacht,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.