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

vektorsumme bilden

 

creme
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 17.08.2017, 20:42     Titel: vektorsumme bilden
  Antworten mit Zitat      
servus leute,

mein Problem ist eigentlich ganz einfach.

ich habe einen vektor der länge 6
Code:
X1=[0.4; 0.2; 0.15; 0.1; 0.1; 0.05]
s=size(X1,1)
end

Die Werte sind der Größe nach geordnet und ergeben in der Summer immer 1
Ich würde gerne vom ersten Element beginnend anfangen die Werte solange auf zu summieren bis 0.9 erreicht ist. Falls 0.9 zb nicht erreicht werden kann soll mir einfach das Ergebnis ausgegeben werden. Die summe sollte aber in jedem Fall <1 sein.

ich habs damit versucht
Code:
X1=[0.2; 0.1; 0.4; 0.15; .05; 0.1]
s=size(X1,1)
for i=1:s
while sum(X1)<0.9
   
sum(X1(:))

    end
end

kann jemand weiter helfen

danke im Voraus
Schönen Abend Wink
Private Nachricht senden Benutzer-Profile anzeigen


equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 18.08.2017, 07:24     Titel:
  Antworten mit Zitat      
Hallo creme,

probier es mal mit dem befehl
Code:
das addiert dir schritt für schritt deine Werte, du bekommst also die kummulierte(aufsummierte) Summe.
Denn dein sum(x) ergibt ja immer 1 wie du bereits gesagt hast.

Hoffe du kommst jetzt weiter;)
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 18.08.2017, 12:09     Titel:
  Antworten mit Zitat      
Code:
X1=[0.2; 0.1; 0.4; 0.15; .05; 0.1]
s=size(X1,1)
c=sort(X1,'descend')
cumsum(c)
 


ja cumsum macht mehr sinn. jetzt könnte ich mir den vorletzten wert ausgeben lassen der noch kleiner als 1 ist. nicht grade elegant, da wäre eine schleifer schöner, aber es funktioniert halt auch nur dann wenn der vorletzte wert der ist der noch kleiner als 1 ist.

wenn ich cumsum verwende und folgendes erhalte

Code:
[ 0.5; 1; 1; 1]
weil von 4 Werten zwei 0 sind dann bekomme ich nicht mein gewünschtes Ergebnis.

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 21.08.2017, 08:44     Titel:
  Antworten mit Zitat      
Was meinst du damit? Versteh es nicht.

Zitat:
wenn ich cumsum verwende und folgendes erhalte

Code:
[ 0.5; 1; 1; 1]


weil von 4 Werten zwei 0 sind dann bekomme ich nicht mein gewünschtes Ergebnis.


Naja du musst dir nicht den vorletzten ausgeben lassen du kannst ja nach dem größten wert auch suchen lassen Very Happy

Code:


Aber wie du bereits gesagt hast geht es sicherlich eleganter Very Happy
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 21.08.2017, 14:18     Titel:
  Antworten mit Zitat      
super Laughing manchmal sieht man den Wald vor lauter Bäumen nicht.

habs zwar mit for schleife probiert aber so sollte es auch passen
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 22.08.2017, 12:53     Titel:
  Antworten mit Zitat      
hey leute,

ich komme gerade einfach nicht weiter und kann mir nicht erklären woran es liegt.

ich habe folgenden vektor und möchte das mir der größte Wert der noch kleiner als 1 ist ausgegeben wird. Jedoch gibt mir Matlab immer 1 aus Shocked

Code:
d =

    0.2359
    0.4603
    0.6775
    0.8837
    0.9521
    1.0000


ans =

     6
Der vektor d sieht so aus und die antwort sollte eigentlich 5 sein mit diesem code

Code:

ich habe ein wenig rumprobiert. wenn ich das ganze in einem neuen file starte funktioniert es. in meinem Programm scheint matlab aber das <1 iwie zu ignorieren. woran kann das liegen??

kann jemand helfen.
Private Nachricht senden Benutzer-Profile anzeigen
 
equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 22.08.2017, 13:05     Titel:
  Antworten mit Zitat      
Also bei mir funktioniert es Very Happy

Code:
d =

   0.23590
   0.46030
   0.67750
   0.88370
   0.95210
   1.00000

max(find(d<1))
ans =  5
 


Wie sieht denn dein File aus, in dem es nicht Funktioniert?
Das so zu sagen irgendeinen Code oder Ähnliches zu kennen ist schwer (zumindest für mich)
Vielleicht nimmst du Bezug auf eine andere Variable?
Oder eventuell alte Variablen oder sowas?
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 22.08.2017, 13:08     Titel:
  Antworten mit Zitat      
ja in einem neuen .m-file klappt es bei mir auch aber nicht in meinem Programm. da ignoriert matlab das <1.

nur wenn ich jetzt schreibe <0.99 dann gehts.
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.