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

Prozentuale Werte analysieren

 

popoff_1
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 11.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2020, 21:24     Titel: Prozentuale Werte analysieren
  Antworten mit Zitat      
Hi,

ich habe folgendes Skript geschrieben:

Code:
S=[42600 35000 91850 20000 41060 30000 63100 10000 38500 30000]';
P=[65 840 50 176 48 638 14 130 32 45]';
X=S .* P;
c=sort(X,'descend');
a=sum(X);
p=cell(10,1);

T=cumsum(c)
for k=1:10
    p{k}= (c(k)/a)*100
end
 


p gibt mir eine cell mit Prozentwerten aufsteigend auf:
Code:

    {[44.4392]}
    {[28.9308]}
    {[ 6.9417]}
    {[ 5.3206]}
    {[ 4.1854]}
    {[ 2.9791]}
    {[ 2.0406]}
    {[ 1.9650]}
    {[ 1.8622]}
    {[ 1.3353]}


Dabei muss ich nun von dieser Cell die ersten Produkte deren Summe rund 70 % ausmachen in eine Klasse A schreiben. Die letzten Produkte deren Summe der prozentualen Gesmtwerte 10% ausmachen gehören in Klasse C. Alle Restlichen Produkte gehören in Klasse C.

Nur wie setzte ich das um? Muss ich dazu eine while Schleife verwenden?
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: 04.04.2020, 23:33     Titel:
  Antworten mit Zitat      
Hallo,

eine Schleife ist nicht nötig. Ich würde cumsum verwenden und dann logische Indizierung.

Was heißt "rund 70%"? Möglichst genau?

Ich würde für p kein Cell Array verwenden, sondern ein Vektor. Cells machen das hier nur unnötig kompliziert.

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
 
popoff_1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 11.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2020, 08:42     Titel:
  Antworten mit Zitat      
Ok habe nun einen Vektor verwendet.

Code:
S=[42600 35000 91850 20000 41060 30000 63100 10000 38500 30000]';
P=[65 840 50 176 48 638 14 130 32 45]';
X=S .* P;
c=sort(X,'descend');
a=sum(X);
p=zeros(10,1);


for k=1:10
    p(k)= (c(k)/a)*100;
end

t=cumsum(p)
 


Ja es müssen bis zu 70% kumuliert erreicht werden. Bzw. von 0-80 Prozent Dies sollten dann in die Klasse A geschrieben werden (ABC-Analyse). Alles was drüber ist sollte in die Kategorie B.

Mit meinen Daten wäre das in etwa so:
Code:

   44.4392   Klasse A
   73.3701   Klasse A
   80.3118   Klasse B
   85.6324   Klasse B
   89.8179   Klasse B
   92.7969   Klasse C
   94.8375   Klasse C
   96.8025   Klasse C
   98.6647   Klasse C
  100.0000  Klasse C
 


Sehe die logische Indizierung in etwa so aus?

Code:
KlasseA=t(t < 80)
KlasseB=t(t > 90)
KlasseC=t(t < 90)


Wenn ok, müsste ich die Klassen nun in ein Pareto Diagramm packen. Nur muss ich dafür ein Neues Cell array machen?
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: 05.04.2020, 10:08     Titel:
  Antworten mit Zitat      
Hallo,

in etwa, ja, aber nicht ganz. Du kannst das doch selbst ausprobieren und wirst dann feststellen, was funktioniert und was nicht?

Code:
KlasseA=t(t < 80)
KlasseB=t(t >= 80 & t < 90)
KlasseC=t(t >= 90)


MATLAB hat eine Funktion pareto für Pareto-Diagramme. Wenn das ist, was du möchtest, kannst du direkt die Funktion auf t anwenden. Wenn es nicht das ist, was du möchtest, müsstest du uns wissen lassen, was du unter einem Pareto-Diagramm verstehst.

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
 
popoff_1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 11.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2020, 10:29     Titel:
  Antworten mit Zitat      
Habe das Pareto Diagramm erzeugt. Nur bin ich mir nicht sicher ob dieses so stimmt.

Die Aufgabenstellung wäre so: Klassifizieren Sie die Produkte in A B und C mittels eines Pareto Diagramms. Aber wie bringe ich die Klassifizierung ins Pareto Diagramm?
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: 05.04.2020, 10:56     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nicht, wie der Aufgabensteller sich das vorstellt. Das sollte dann aus der Vorlesung hervorgehen. Falls nicht, würde ich mich an den Aufgabensteller wenden.
Die Wikipedia-Seite zu Pareto Diagrammen sieht eine solche Klassifizierung zumindest nicht vor.

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
 
popoff_1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 11.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.04.2020, 11:30     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

ich weiß nicht, wie der Aufgabensteller sich das vorstellt. Das sollte dann aus der Vorlesung hervorgehen. Falls nicht, würde ich mich an den Aufgabensteller wenden.
Die Wikipedia-Seite zu Pareto Diagrammen sieht eine solche Klassifizierung zumindest nicht vor.

Grüße,
Harald


Ich glaube mein Prof. meinte da so etwas:

Code:

KlasseA=t(t < 80)
KlasseB=t(t >= 80 & t < 90)
KlasseC=t(t >= 90)
klassen = {'KlasseA','KlasseA','KlasseB','KlasseB','KlasseB','KlasseC','KlasseC','KlasseC'};
pareto(p,klassen)


Kann ich hier die Beschriftungen auch automatisch zuweißen? Also wenn (t < 80) soll es mir die Balken des Diagrammes automatisch beschriften. Also je nach Klasse sollte es mit die Beschriftungen der X-Achse sollte automatisch zuweißen.

Unbenannt.JPG
 Beschreibung:

Download
 Dateiname:  Unbenannt.JPG
 Dateigröße:  33.63 KB
 Heruntergeladen:  173 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: 05.04.2020, 12:01     Titel:
  Antworten mit Zitat      
Hallo,

ja, kannst du.
Code:
klassen = cell(size(t));
klassen(t<80) = {'KlasseA'};
% etc.


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.