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

Summe von Zeilen erfüllter Bedingung.

 

Linda
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 26.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2017, 12:52     Titel: Summe von Zeilen erfüllter Bedingung.
  Antworten mit Zitat      
Hallo,

ich möchte eine Bedingung aufstellen, die die Zeilen zählt, die eine andere Bedingung erfüllt.

Code:
       for k   = 1:length(X)
            for i_V = 4:2:18
                A(i_V,:) = mean(X(X(:,1)== i_V,:),1);
               
               
            end
        end


Jetzt soll die if - Bedingung erstellt werden, dass der mean nur dann gebildet wird, wenn mindestens 5 Zeilen wahr sind.
Hintergrund ist statistische Genauigkeit, bei weniger als fünf Werten, ist der mean in meinem fall nicht zu gebrauchen.

Ich weiss nicht genau, wie ich das angehen muss

Für Hilfe und Tipps wäre ich dankbar.

Linda
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: 09.08.2017, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

aufspalten in mehrere Zeilen:
Code:
data = X(X(:,1)== i_V,:);
if size(data, 1) >= 5

else

end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.08.2017, 15:03     Titel: Re: Summe von Zeilen erfüllter Bedingung.
  Antworten mit Zitat      
Hallo Linda,

Ich bin mir nicht sicher. Vielleicht hilft das:

Code:
for k   = 1:length(X)
  for i_V = 4:2:18
     match = (X(:,1) == i_V);
     if sum(match) >= 5
       A(i_V,:) = mean(X(match, :),1);
     end
   end
end

Hilft das schon?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Linda
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 26.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2017, 15:47     Titel:
  Antworten mit Zitat      
Danke! Ja, das klappt wie gewünscht. So bleiben die Zeilen, die die Bedingung nicht erfüllen, jedoch leer, in meinem Fall hätte ich lieber NaN´s bei nicht-Erfüllung. Ist das möglich?

Linda
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: 09.08.2017, 16:13     Titel:
  Antworten mit Zitat      
Hallo,

if / else, und dann auf NaN setzen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 26.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2017, 16:20     Titel:
  Antworten mit Zitat      
Hab ich getestet:

Code:
for k   = 1:length(X)
  for i_V = 4:2:18
     match = (X(:,1) == i_V);
     if sum(match) >= 5
       A(i_V,:) = mean(X(match, :),1);
     else A(i_V,:) = NaN;
     end
   end
end


Dann krieg ich aber die Fehlermeldung, dass A nicht existiere.
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: 09.08.2017, 16:26     Titel:
  Antworten mit Zitat      
Hallo,

das verwundert mich. Ein reproduzierbares Beispiel wäre hilfreich.
Generell sollte man auch darüber nachdenken, A vor der Schleife vorzubelegen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 26.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2017, 17:57     Titel:
  Antworten mit Zitat      
Anbei eine Tabelle. Vll hilft das etwas. Ist hier in einem struct gespeichert. Ändert ja aber nichts am Vorgehen.

Aber funktioniert das im Normalfall nicht auch ohne vorherige Belegung der neuen Matrix?

matlab.mat
 Beschreibung:

Download
 Dateiname:  matlab.mat
 Dateigröße:  23.95 KB
 Heruntergeladen:  219 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: 10.08.2017, 08:38     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Anbei eine Tabelle. Vll hilft das etwas. Ist hier in einem struct gespeichert. Ändert ja aber nichts am Vorgehen.

Und mit welchem Teil dieses Structs arbeitest du, sprich: was ist X?
Mit X = MesstabelleVor.Mean.TI12; läuft der Code beispielsweise durch.

Zitat:
Aber funktioniert das im Normalfall nicht auch ohne vorherige Belegung der neuen Matrix?

Hätte ich auch gemeint. Deswegen würde ich das Verhalten gerne reproduzieren. Dazu brauche ich aber passende Daten.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 26.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2017, 13:16     Titel:
  Antworten mit Zitat      
Ja, jetzt läuft er bei mir komischerweise auch durch. Obwohl ich nichts (zumindest bewusst) verändert habe. Seltsam.
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.