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

Werte sortieren, summieren und anschließend plotten

 

Olli_11845
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 29.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2020, 18:36     Titel: Werte sortieren, summieren und anschließend plotten
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem mit einer Tabelle, die ich bearbeiten und darstellen will. Die echte Tabelle ist zu groß deswegen einmal so:

5.0000 5.0000 12.0000
3.0000 4.6667 12.8889
3.0000 4.3333 13.7778


Ich will diese Tabelle aufsummieren, in Abhängigkeit von der ersten Spalte. Ich will also im Prinzip folgendes

0 0 0
1 0 0
2 0 0
3 9 26,6667
4 0 0
5 5 12



Ich hoffe das Problem wird deutlich.


Jetzt zu dem Plot den ich aus der neuen Tabelle zusammen basteln will.

Die X Achse soll der ersten Spalte entsprechen.
Die Werte der zweiten Spalte sind oberhalb der X- Achse und die Werte der dritten Spalte unterhalb der X- Achse. Ich vermute es geht recht simpel, wenn ich die Werte der dritten Spalte einfach negiere. Dann hätte ich was ich brauche, allerdings will ich nciht dass die Werte ein negatives Vorzeichen haben. Lässt sich das vermeiden`?
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Harald
Forum-Meister

Forum-Meister


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

zum ersten Teil: findgroups und splitapply .

Soll die Skala unterhalb und oberhalb der x-Achse positiv sein oder wie stellst du dir negative Werte unterhalb der x-Achse vor?
Falls ja, die an der Skala angezeigten Werte mit yticks / yticklabels anpassen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Olli_11845
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 29.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2020, 11:12     Titel:
  Antworten mit Zitat      
ich versuche es gerade mal.

Ich glaube die Funktionen sind nicht falsch, aber irgendwie kriege ich das noch nciht ganz hin. Wird schon. Danke dir
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Olli_11845
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 29.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2020, 11:22     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

zum ersten Teil: findgroups und splitapply .



Ich hatte aber mehr auf auf eine Art Summewenn Funktion gehofft, so wie es sie in Excel gibt. Gibt es da nichts in Matlab

Dass ich quasi sage wenn Spalte 1 = 5 dann mach die Summe aus Spalte 2. Und das Ergebnis ist dann idealerweise eine einzelne Zahl und keine Tabell
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Olli_11845
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 29.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2020, 12:06     Titel:
  Antworten mit Zitat      
Ich habe das ganze jetzt einmal händisch gemacht. Und da sieht es so aus. Es funktioniert, aber ich bin mir sicher dass es auch leichter geht.

Code:
X=linspace(5,70,20);
Y=linspace(2,12,20);
T=linspace(-2,5,20);
T=round(T);

minT=min(T)
maxT=max(T)


Tm2=find(T==-2);

SumXTm2=sum(X(1,Tm2))
SumYTm2=sum(Y(1,Tm2))


Tm1=find(T==-1);

SumXTm1=sum(X(1,Tm1))
SumYTm1=sum(Y(1,Tm1))


T0=find(T==0);

SumXT0=sum(X(1,T0))
SumYT0=sum(Y(1,T0))



T1=find(T==1);

SumXT1=sum(X(1,T1))
SumYT1=sum(Y(1,T1))



T2=find(T==2);

SumXT2=sum(X(1,T2))
SumYT2=sum(Y(1,T2))


T3=find(T==3);

SumXT3=sum(X(1,T3))
SumYT3=sum(Y(1,T3))



T4=find(T==4);

SumXT4=sum(X(1,T4))
SumYT4=sum(Y(1,T4))


T5=find(T==4);

SumXT5=sum(X(1,T5))
SumYT5=sum(Y(1,T5))

listeX=[SumXTm2,SumXTm1,SumXT0,SumXT1,SumXT2,SumXT3,SumXT4,SumXT5]'
listeY=[SumYTm2,SumYTm1,SumYT0,SumYT1,SumYT2,SumYT3,SumYT4,SumYT5]'

temp=(-2:5)'

plot(temp,listeX,'*')
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


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

hast du dir findgroups und splitapply denn mal genauer angesehen? Das macht doch genau das in zwei Zeilen.
Spätestens wenn es an größere Datenmengen geht, macht Excel viele Dinge seeeehr ungeschickt. Man muss in MATLAB vielleicht ein wenig umdenken, aber es lohnt sich meines Erachtens.

Du kannst das natürlich auch so machen, wie du es händisch machst. Allerdings musst du dann halt wirklich händisch durchgehen oder eine for-Schleife über alles laufen lassen. Mein Vorschlag wäre eben viel effizienter.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.