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

Einfache Frage: Matrix um bestimmte Werte "beschneiden&

 

EricSchulze

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2011, 17:38     Titel: Einfache Frage: Matrix um bestimmte Werte "beschneiden&
  Antworten mit Zitat      
Hallo liebe Forumgemeinde.

Ich treffe immer wieder auf dieses Problem. Leider weiß ich nicht genau wie man es nennt oder richtig beschreibt, daher der neue Thread.

Es geht um folgendes:

Ich hab eine Matrix mit Messwerten über der Zeit. Etwa so:

Zeit Wert
0 5
1 4.5
2 3
3 2.71
4 2.2
... ...


Dann hab ich modelliert und kriege eine viel größere Matrix mit Modellwerten über der Zeit. etwa so

Zeit Wert
0 5
0.1 5.3
0.2 4.4
0.3 4.2
...
1 4.4
1.1 3.9
1.2 ...
...
4 2.1
... ...

Also eine größere Matrix, mit einer sehr feinen Zeitskala und dazu gehörigen Messwerten.

Für eine grobe Fehlerschätzung würde ich nun gern Die Fehlerquadrate an den diskreten Zeitpunkten berechnen, die ich auch bei den orginalen Messwerten habe. Also bei t = 0 1 2 3 4 ...
Dafür ist muss ich aber die Modellwerte aus der Modellmatrix mit genau diesen diskreten Zeitwerten herausschneiden.
Ich will natürlich auf keinen Fall ne Schleife benutzen sondern das mit logischem Indezieren oder so lösen, aber ich kriegs einfach nicht einfach hin.
Es gibt doch dafür sicherlich einen leichten weg oder?

Vielen Dank
Liebe Grüße


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.01.2011, 17:52     Titel:
  Antworten mit Zitat      
Hallo,

sind die Skalen so regelmäßig und eine Schrittweite ein vielfaches der anderen, wie in dem Beispiel?
Dann kannst du von den zweiten Daten einfach jeden 10. Wert nehmen
y(1:10:end)

Grüße.
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
EricSchulze

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2011, 18:02     Titel:
  Antworten mit Zitat      
Leider nicht

Mein Datenvektor sieht so aus:

Code:

D=[
0 0.1 14.5 0
2 0.18 14.97 0.07
4 0.28 13.29 0.16
6 0.42 12 0.32
8 0.66 11.15 0.55
10 1.12 7.87 0.94
12 1.5 4.11 1.48
13 1.93 1.83 1.76
17 1.73 0 1.97
21 1.44 0 1.96
25 1.1 0 1.95];
 


Der Zeitvektor der Modellwerte ist:

0:0.05:25

mit entsprechenden Werten. Ich hab also für jeden Zeitpunkt der Realmessung auch entsprechende Modellwerte. Bloß wie ich die aus der Matrix kriege weiß ich nicht.
Vllt ja mathematisch mittels geeigneter Multiplikation?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.01.2011, 18:06     Titel:
  Antworten mit Zitat      
Hallo,

das ginge so:
Code:
t = 0:0.05:25;
idx = ismember(t, D(:,1));


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
EricSchulze

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2011, 18:13     Titel:
  Antworten mit Zitat      
Haut hin
Dieser Befehl ist genau der, den ich gesucht habe.
Vielen Dank
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.01.2011, 18:34     Titel:
  Antworten mit Zitat      
Hallo Eric, hallo Harald,

Zitat:
Code:
t = 0:0.05:25;
idx = ismember(t, D(:,1));

Dies ist mit größter Vorsicht zu genießen! Floating Point Rundungen können hier zu unerwarteten Ergebnissen führen, wenn D andere Werte annimt:
Code:
t = 0:0.05:25;
D = 0:0.1:25;
ismember(D, t)

Plötzlich sind dann einige D nicht in t enthalten!
Helfen würde dann z.B. D und t mit 100 zu multiplizieren und zu runden.
INTERP1 wäre eine stabile Lösung, bei der die D-Werte auch zwischen zwei t-Werten liegen dürfen.

Gruß, Jan
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.