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

Daten aus einem Vektor in einer Matrix finden

 

eRo
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 06.03.17
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 07.04.2017, 10:28     Titel: Daten aus einem Vektor in einer Matrix finden
  Antworten mit Zitat      
Hallo Leute,

Ich habe derzeit folgendes Problem:

Ich habe 12.000 Daten von 15 Sensoren. Diese liegen in eine Matrix (12000,15).
Jetzte möchte ich, ohne Verwendung eine for-Schleife, die Position bestimmen, wo das Integral unter der Kurve größer 0,5 des gesamtintegrals ist.

Also:
Code:

data = matrix(12000,15);
a = cumsum(data,1);
b = sum(data,1)/2;

[row col] = find(a>b);
 

hab ich mir gedacht, geht aber nicht so wie es soll. Mit eine for-Schleife läuft das schon, wegen effektivität muss es aber ohne Schleife gehen. Ismemeber geht auch nicht, da die Bedingung an unterschidlichen Indizes in a erfüllt ist.

Ich hoffe das Problem ist gut umschrieben.

hf & gl

eRo
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.04.2017, 12:03     Titel:
  Antworten mit Zitat      
Hallo,

mit dem momentanen Code ist data genau ein Wert, der rechts unten.

Falls das nicht das Problem ist, bitte genauer beschreiben, was "geht aber nicht so wie es soll" hier bedeutet.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 06.03.17
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 07.04.2017, 12:41     Titel:
  Antworten mit Zitat      
Moin Harald,

Berechtigter Einwand ^^ war mein Fehler

data ist ne Matrix 12000x 15 (das sollten die Zahlen angeben).

Also die Idee ist:
ich habe die 15 Sensoren mit je 12000 Messpunkten. Die Sensoren bekommen irgendwann ein Signal. der Zeitpunkt des Signals variiert leicht. Jetzt habe ich vorab das Grundrauschen genullt. Jetzt bleibt nur noch der eigentliche Peak über. Jetzt berechne ich das Integral
Code:
b = sum(data,1)

für jede Spalte (das ist meine Vergleichsgröße). Durch
Code:

bilde ich die kumulative Summe und will nun den Zeitpunkt (Index) finden, bei dem die kumulative Summe a größer als 0.5*b wird.
Zitat:
[row col] = find(a>b/2,1,'first')

war die Idee. Ich versuche also spaltenweise einen Vergleich der kumulativen mit der gesamten Summe durchzuführen. Das ganze ohne Schleife.
Mit Schleife sieht das so aus:
Code:

a = cumsum(muscle_ref_up_conv,1);      
b = sum(muscle_ref_up_conv,1)/2;

for jj =1:n_trial
    [start_row(jj), start_col(jj)] = find(a(:,jj) / b(jj) > 0.5,1,'first');
end
 

und funktioniert genau so wie es soll.

Nochmal sorry
Private Nachricht senden Benutzer-Profile anzeigen
 
eRo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 06.03.17
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 07.04.2017, 15:44     Titel:
  Antworten mit Zitat      
kleines Update:

bei variable b muss das
Code:
hinten weg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.04.2017, 20:14     Titel:
  Antworten mit Zitat      
Hallo,

ich sehe auf Anhieb keine Möglichkeiten, die for-Schleife zu vermeiden.
Solltest du in der tatsächlichen Anwendung nicht deutlich mehr als 15 Spalten haben, dann würde ich durch die for-Schleife keinen signifikanten Performance-Unterschied erwarten.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 06.03.17
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 10.04.2017, 09:34     Titel:
  Antworten mit Zitat      
Hallo,

ja das hab ich mir schon so gedacht, . Ich wollte halt allgemein die Schleifenanzahl reduzieren.

Aber danke für die Gedanken. Das nächste Problem kommt bestimmt.

eRo
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.