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

statistische Auswertung

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 17:50     Titel: statistische Auswertung
  Antworten mit Zitat      
Hallo zusammen!
Ich hab da mal eine Frage zu statistischen Auswertungen. Meine Daten liegen spaltenweise in einer 64000x128 float-Matrix vor. Ich möchte die einzelnen Spalten statistisch bewerten. min(), max(), std(), mean(), median() sind mir klar und es funktioniert auch schon:
[code]
m1 = min(fdata.data(:,j));
m1 = max(fdata.data(:,j));
m1 = mean(fdata.data(:,j));
m1 = median(fdata.data(:,j));
[\code]

Jetzt möchte ich die Anzahl der Element pro Spalte wissen, die größer bzw. kleiner einer bestimmten Schranke sind. Mein Ansatz: Schleife über alle Zeilen... Funktioniert, ist aber recht langsam Sad - zumal mehrere 100 Dateien eingelesen werden sollen.

Kennt jemand eine fertige Fkt. die das Problem rascher lösen kann?? Habe die Matlab - Hilfe kurz durchforstet, weiß aber nicht wirklich wie ich meine Frage formulieren soll ....

Danke im vorraus und LG
ChJ

PS: Zur Info habe ich meinen Code angehängt. Falls irgendjemand Kommentare/Bemerkungen / ... loswerden will wie man das Prog. beschleunigen kann wäre ich sehr dankbar!

dirtest.m
 Beschreibung:

Download
 Dateiname:  dirtest.m
 Dateigröße:  1.08 KB
 Heruntergeladen:  424 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.03.2011, 23:10     Titel: Re: statistische Auswertung
  Antworten mit Zitat      
Hallo Anonymous,


Zitat:
Jetzt möchte ich die Anzahl der Element pro Spalte wissen, die größer bzw. kleiner einer bestimmten Schranke sind.

Code:
m = sum(fdata.data(:, j) > 3)

Möglichkeiten zur Beschleunigung:

1. Statt jedes Mal "fdata.data(:, j)" erneut zu erzeugen, benutze einen temporären Vektor: "data = fdata.data(:, j)". Das Herauskopieren einer Spalte braucht nämlich ziemlich viel Zeit.

2. Statt die Spalten einzeln auszuwerten, kannst Du das gleich für die ganze Matrix machen: "min(data, 1)" ergibt gleich einen Vektor der MIN Werte entlang der ersten Dimension. Das gleiche für MAX, MEAN, STD, MEDIAN und den oben genannten Schwellenwert: "sum(data > 3, 1)".

Insgesamt vermute ich aber, dass das Einlesen und Schreiben der Files den Großteil der Rechenzeit benötigt. Benutze doch mal PROFILE um die langsamsten Zeilen zu finden. Es nützt wenig, wenn die Berechnungen 100 mal schneller sind, aber nur 2% der Gesamt-Laufzeit benötigen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2011, 08:01     Titel:
  Antworten mit Zitat      
Hallo Jan
Danke für die prompte und ausführliche Antwort!
LG
chj
 
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.