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 der Werte einer Schleife bilden

 

ichbindu
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 16:02     Titel: Summe der Werte einer Schleife bilden
  Antworten mit Zitat      
Hallo,
gleich mal vielen Dank für die Antworten.

habe mein Problem in einem kleinen Bsp. zusammengefasst.

Mein Programm:
Code:

x=2;

for z=[2:1:4];
    a=x*z;          %% 2*2=4;2*3=6;2*4=8
    for b=[2:1:3];
        d=a*b;      %% 4*2=8;4*3=12;6*2=12;6*3=18;8*2=16;8*3=24
        v=sum(d)      
    end    
end
%%es sollte das Ergebinss 90 liefern! es kommt jedoch 24 heraus
 


Mein Problem ist im Bsp. schon beschrieben, ich möchte die Summe aus allen berechneten d Werten bekommen, also 90 (8+12+12+18+16+24) beim plotten gibts ja den hold on befehl. bräuchte was ähnliches.

Vielen dank
Private Nachricht senden Benutzer-Profile anzeigen


Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.11.2010, 16:26     Titel:
  Antworten mit Zitat      
Hallo,

du laesst dir immer nur den Wert des letzten Schleifendurchlaufes ausgeben und dies ist nunmal 24. Du brauchst einen Index (idx) um alle Zwischenergebnisse in dem Vektor d zu speichern:

Code:

x = 2;
idx = 0;
d = zeros (6,1); % preallocating

for z = 2:4
    a = x*z;          % 2*2=4;2*3=6;2*4=8
    for b = 2:3
        idx = idx+1;
        d(idx) = a*b;      % 4*2=8;4*3=12;6*2=12;6*3=18;8*2=16;8*3=24      
    end    
end
v = sum(d);
 


edit: man kann das Problem auch mit nur einer Schleife loesen:

Code:

x = 2;
z = 2:4;
b = 2:3;
a = x*z;
d = zeros (length(a),1);

for idx = 1:length(a)
    d(k,1:2) = a(idx).*b;
end
v = sum(d(:));
 


Vielleicht geht es auch ganz ohne die Schleife?

MFG

Sco
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: 17.11.2010, 13:02     Titel: Re: Summe der Werte einer Schleife bilden
  Antworten mit Zitat      
Hallo ichbindu,

Erstmal eine kleine Modifikation für Dein Programm:
Code:

x=2;
v = 0;   % <---
for z=2:4
    a=x*z;
    for b=2:3
        d=a*b;
        v=v+sum(d);  % <---
    end    
end
 

Damit wird die Summe in v akkumuliert und nicht in jedem Schleifendurchlauf überschrieben.

Ohne Schleifen ginge es auch so:
Code:

v = 2 *. (transpose(2:4) * 2:3);  % Outer-product => [3 x 2] matrix!
sum(v(:));
 

Das "äußere Produkt" enthält also das Produkt aus jeder Zahl des ersten Vektors mit jeder Zahl des zweiten Vektors, also genau das, was Du brauchst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2010, 18:14     Titel:
  Antworten mit Zitat      
Vielen Vielen Dank für eure Anteilnahme!

MFG
Private Nachricht senden Benutzer-Profile anzeigen
 
Mops
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 31.07.10
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 27.11.2010, 11:58     Titel:
  Antworten mit Zitat      
Guten Morgen zusammen,

Ich habe das gleiche Problem, nur bei mir funktiniert das nicht.
Vllt könntet ihr da mal schauen was da nicht funktioniert. Vielen Dank!

In dem xls-File ist ein Rechteck versteckt, welches rotieren soll. Ich möchte also aus dem Rechteck das Volumen eines Zylinders bestimmen.
Wenn ich das Programm durchlaufen lasse ist das Volumen immer =0.
Code:
Z=xlsread('Programmtest','Tabelle1','A1:AX1049')

[Zeilenanzahl,Spaltenanzahl] = size(Z)

Scheiben=zeros(Zeilenanzahl,1);

for i=1:1:Zeilenanzahl;
   
    Scheiben(1:Zeilenanzahl)=(sum(Z(i,:)))^2*pi*1;
end

Volumen=sum(Scheiben(:));


Programmtest.xls
 Beschreibung:

Download
 Dateiname:  Programmtest.xls
 Dateigröße:  355.5 KB
 Heruntergeladen:  435 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Mops
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 31.07.10
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 27.11.2010, 12:59     Titel:
  Antworten mit Zitat      
Hallo,

ich bins nochmal:).
Ich habe die Lösung. Und eine neue Variante zu diesem Problem.
Hier die Lösung:

Code:
clear all;clc
Z=xlsread('Programmtest','Tabelle1','A1:AX1049')

[Zeilenanzahl,Spaltenanzahl] = size(Z)

Scheiben=[];
for i=1:1:Zeilenanzahl;
    Scheiben=[Scheiben; sum(Z(i,:))^2*pi];
end

Volumen=sum(Scheiben)


Allen ein schönes Wochenende!
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.