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 nach 2 for-Schleifen in Matrix speichern

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2016, 15:14     Titel: Werte nach 2 for-Schleifen in Matrix speichern
  Antworten mit Zitat      
Hallo,

Ich habe folgenden Input

Winkel Laenge
15 2,4,6
45 3,5,7

Für jeden Winkel soll nun bei den Laengen der Wert C ausgerechnet werden. Das habe ich mit 2 For-Schleifen gemacht.

for i=1: Zeilenanzahl
winkel=...

for j=1 : Spaltenanzahl
laenge=....
...
C=...
end
end

Da der Code mit der Berechnung etwas komplizierter ist, habe ich den Teil mal so eingefügt. Es werden definitiv mit dem Code alle Werte richtig berechnet. Nun möchte ich die Ergebnisse gerne in eine Matrix schreiben. Die sollte dann wie folgt aus sehen:

Winkel Länge Wert
15;2;c1
15;4;c2
15;6;c3
45;3;c4
45;5;c5
45;7;c6

Leider werden bei mir die alten Werten mit den neuen immer überschrieben, sodass ich mit

M(j,:)=[Winkel Laenge C]

nur folgende Matrix bekomme

45;3;c4;
45;5;c5;
45;7;c6;

Kennt jemand die Lösung des Problems? Brauche ich dafür dann eine weitere for-schleife?

Danke und Grüße


ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2016, 16:06     Titel:
  Antworten mit Zitat      
Denke das Problem liegt an deinem j - wenn j die zählvariable für die Spalten ist, dann geht diese nur bis 3 (da du ja drei spalten hast)!

Wenn du deine Matrix dann so aufbaust --> M(j,Smile=[Winkel Laenge C] - dann wird diese Matrix nie mehr als 3 Zeilen haben --> muss wahrscheinlich M(i,Smile heißen oder?
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: 08.01.2016, 16:14     Titel: Re: Werte nach 2 for-Schleifen in Matrix speichern
  Antworten mit Zitat      
Hallo,

Zitat:
Ich habe folgenden Input
Winkel Laenge
15 2,4,6
45 3,5,7

Ist das ein Cell array oder zwei Matrizen? Bitte poste die Inputs in valider Matlab-Syntax, denn dann sind sie eindeutig klar.

Zitat:
Winkel Länge Wert
15;2;c1
15;4;c2
15;6;c3
45;3;c4
45;5;c5
45;7;c6

Das ist auch keine valide Matlab-Syntax. Welchen Typ hat dieses Array? Was ist "c1", "c2", ...? Wieso stehen Semicolons zwischen den Elementen?

Wenn sich der Winkel nur in der "for i" Schleife ändert, wieso speicherst Du ihn dann in "M(j,:)=[Winkel Laenge C]" zu jedem Element von C mit ab?
Ich nehme an, Du brauchst ein 3D-Array und "i" muss auch als Index verwendet werden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2016, 16:48     Titel:
  Antworten mit Zitat      
Hey,

das sind 2 Matrizen. Ich hoffe, die Schreibweise ist besser:

Winkel=[15;45]
Laenge=[2,4,6;3,5,7]

Mit der Laenge 2 soll nun mit dem Winkel 15 der Wert c1 berechnet werden. Mit der Laenge 4 und dem Winkel 15 der Wert c2 usw. Die c-Werte variieren je Winkel und Laenge, sodass ich insgesamt sechs c-Werte berechne. Die Werte c1, c2 usw. sind also meine berechneten Werte.

Ich möchte den verwendeten Winkel, die verwendete Länge und den berechneten C-Wert in ein Matrix einspeicher, die dann so aussehen soll:

[15, 2, cp1; 15, 4, cp2; 15, 6, cp3; 45, 3, cp4; 45, 5, c5;45, 7, c6]



ro_mat hat Folgendes geschrieben:
Denke das Problem liegt an deinem j - wenn j die zählvariable für die Spalten ist, dann geht diese nur bis 3 (da du ja drei spalten hast)!

Wenn du deine Matrix dann so aufbaust --> M(j,:)=[Winkel Laenge C] - dann wird diese Matrix nie mehr als 3 Zeilen haben --> muss wahrscheinlich M(i,:) heißen oder?


Mit M(i,:) klappt es leider auch nicht. Auch hier werden Werte überschrieben. Output ist dann:

M=[15,6,c3;45,9.c6]
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.01.2016, 22:08     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
[15, 2, cp1; 15, 4, cp2; 15, 6, cp3; 45, 3, cp4; 45, 5, c5;45, 7, c6]

Was ist "cp1" und "c5"?

Kannst Du einen lauffähigen Code posten? Und ein konretes Beispiel mit echten Zaheln?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 11:14     Titel:
  Antworten mit Zitat      
Hallo,

ich hoffe du brauchst es noch denn ich denk ich habe was dir gefehlt hat! Ich weiß ja nicht wie deine beiden for-Schleifen aufgebaut sind, doch in Anlehnung an die bestehenden Matrizen(Winkel, Laenge) kann deine End-Matrix so konstruiert werden:

Code:


temp = 0;                              % Hilfsvariable für die End-Matrix

for i=1:length(Winkel)            % Schleife für die Werte aus der Winkel-Matrix

 for j=1:length(Laenge)          % Schleife für die Werte aus der Laenge-Matrix

 M(j+temp,1) = Winkel(i);       % Einfügen der Winkel in Spalte 1
 M(j+temp,2) = Laenge(i,j);    % Einfügen der Laengen in Spalte 2
 M(j+temp,3) = C(j);              % Einfügen der berechneten Werte

 end

temp = temp+size(M,1);         % Hilfsvariable für nächsten Durchlauf erhöhen

end

 


Führe ich diesen Code mit deinen angegebenen Werten durch, so bekomme ich die End-Matrix nach deiner gewünschten Form Smile

Ich gehe davon aus das du teile dieses Codes in deine bestehenden Schleifen einfügen kannst, da die Berechnung und das Einfügen in die End-Matrix sicher simultan ablaufen kann!

Hope that helps - ansonsten nachfragen Wink

Lg
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.