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

Spaltenvektor in Matrix transponieren

 

schneeflocke
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2012, 14:50     Titel: Spaltenvektor in Matrix transponieren
  Antworten mit Zitat      
Hallo Zusammen,

ich habe folgendes Problem:
Ich muss physiologische Messdaten aufnehmen. Dazu werden die physiologischen Messwerte in der Matrix a gespeichert.
Und der dazugehörige Messzeitpunkt in Matrix b.
D.h. der Messzeitpunkt von Messwert in Matrix a ist an der gleichen Stelle in Matrix b.

Matrix a und Matrix b haben eine Größe von 20x9.

Wenn kein Signal gemessen werden konnte, wird an der Stelle NaN in Matrix a geschrieben. Die ersten paar Zeilen sind immer mit NaN belegt.

Ich möchte herausfinden wie lange es dauert bis ein Wert kommt.

Mein erster Ansatz ist, dass ich herausfinde wo NaN steht:

Code:

[r c v]  = find(isnan(a));


Damit weiß ich an welchen Stellen NaN steht.
Wie kann ich diese Information nutzen, um herauszufinden welche Zeitpunkte das an diesen Stellen sind.

Ein weiteres Problem dabei ist, dass r und c einspaltig ist. Ich müsste r und c erst einmal in eine Matrix von 20x9 teilen oder?

Oder habt ihr einen anderen Ansatz??
Ich weiß echt nicht mehr weiter

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 21.09.2012, 16:10     Titel:
  Antworten mit Zitat      
Hi,

kannst du bitte deine Matrizen posten.
Du willst den nächsten zum NaN Wert wissen?

Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
schneeflocke
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 08:18     Titel:
  Antworten mit Zitat      
Hallo Vito,

danke erst mal für deine Antwort!

Ich habe beide Matrizen angehängt.
Die eine ist die Matrix mit den Messwerten und die ander die dazugehörige Zeit.

Ich möchte wissen wann der nächste Wert nach NaN kommt.

messung.JPG
 Beschreibung:
Messwerte

Download
 Dateiname:  messung.JPG
 Dateigröße:  106.65 KB
 Heruntergeladen:  503 mal
zeit.JPG
 Beschreibung:
Zeitpunkte der Messung

Download
 Dateiname:  zeit.JPG
 Dateigröße:  122.37 KB
 Heruntergeladen:  539 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 24.09.2012, 13:18     Titel:
  Antworten mit Zitat      
Hi,

du kannst mit find die Zeilen und Spalten bestimmen, wo in der Matrix eine Zahl vorkommt.
Code:

[Zeile, Spalte] = find(~isnan(Matrix));
[b,m] = unique(Spalte);
b gibt die Spalte an und
m die letzte Zeile in der Spalte zum Bsp. b(1), wo noch ein NaN drin steht.
 


Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
schneeflocke
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 16:12     Titel:
  Antworten mit Zitat      
hallo,

danke für deine Antwort Vito!

Also jetzt weiß ich an welcher Stelle eine Zahl steht, aber wie kann ich mithilfe dieser Information herausfinden zu welchem Zeitpunkt (andere Matrix) diese Messung gemacht wurde?

Also ich möchte das nicht immer manuel eingeben, sondern es sollte möglichst automatisch gesucht werden.

Ich denke das müsste man über eine Schleife machen oder?
Ich komme einfach auf keinen Ansatz
Private Nachricht senden Benutzer-Profile anzeigen
 
Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 24.09.2012, 17:12     Titel:
  Antworten mit Zitat      
Hi,

so geht das:
Code:

[Zeile, Spalte] = find(~isnan(unnamed));
[b,m] = unique(Spalte);

idx = find(diff(Spalte))+1;
Idx = [1;idx];

for i=1:length(b)
StartZeit = ZeitMatrix(Zeile(Idx(i)),b(i))
end
 

Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
schneeflocke
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 17:23     Titel:
  Antworten mit Zitat      
Super!! Vielen lieben Dank!!
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.