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

Schleifenergebnisse in matrix abspeichern

 

JJJ
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 01:15     Titel: Schleifenergebnisse in matrix abspeichern
  Antworten mit Zitat      
Liebe Matlabcracks


habe ein problem mit dem speichern von ergebnissen in einer schleife. Hier zuerst einmal der code:

Code:

for mm=1:y;
    lline=points(mm,:);          %take line m
    for k=1:length(lline)-1;
        pline=[points(mm,k) points(mm,k+1)] %create line coordinates
        lines(mm,k)=pline
    end
   
end
 


Ich moechte gerne den vektor pline in einer matrix absepeichern, finde aber keine Moeglichkeit genug Zeilen in der Matrix anzusprechen, da weder k noch mm in ihrem wert gross genug sind.


Es waere prima wenn mir jemand helfen koennte!

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 07:55     Titel:
  Antworten mit Zitat      
Guten Morgen JJJ

Damit ich Dir helfen kann, müsste ich noch was wissen:

1. Wie sieht points aus?
Stehen in den Spalten Koordinaten (d.h. für 2D [n x 2]Matrix bzw. für 3D [n x 3]Matrix)?

2. Ist es so gedacht, dass der Endpunkt der ersten Linie gleich dem Startpunkt der zweiten Linie ist?

3. Speichern möchtest Du die Linien (je 2 Punktkoordinaten) in einer Matrix?
-> also für 2D z.B. eine [n-1 x 4]Matrix?

Wenn meine obigen Annahmen zutreffen, würde folgender Code passen:

Code:
points=[1:10 ; 1:10]';

[ n, m] = size(points);
for mm = 1 : n-1
    pline( mm,1 : 2*m) = [ points( mm, :) points( mm+1, :)];
end


lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
JJJ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 11:15     Titel:
  Antworten mit Zitat      
Hallo Dagnabit


vielen Dank erstmal fuer deine schnelle Antwort.


Also zu 1.: points ist eine Matrix mit steigenden Werten z.B.

Code:

points =

     1     2     3
     4     5     6
     7     8     9
 


Sie spiegeln die Punktnummerierung in einem MEsh wieder.

Zu 2.: Nun moechte ich die Linien zwischen den Punkten definieren (bisher erstmal nur in horizontaler richtung). Daher lautet das ergebniss fuer den ersten schleifendurchgang fuer pline = [1 2], pline[2 3]. Diese bekomme ich mit dem vorgestellten Programm bereits raus.

Zu 3.: Das Problem liegt im abspeichern von pline in lines! Da pline mit jeder Schleife ueberschrieben wird muss ich es in einer neuen matrix abspeichern. Das saehe fuer diese beispiel hier so aus:

lines = [1 2;2 3;4 5;...]

Mein Problem ist, dass ich keine moeglichkeit finde eine matrix so anzusprechen ,dass sie nach jedem Schleifendurchgang eine zeile weiter geht und pline hier jedes mal abspeichert.


Ich hoffe ich konnte deine Fragen beantworten und hoffe du kannst nun meine beantworten Smile

VIelen Dank schonmal Jakob
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 11:52     Titel:
  Antworten mit Zitat      
Servus Jakob

Eine simple Möglichkeit wäre
Code:
count = 1;
for mm = 1 : y
    lline = points( mm, :);          % take line m
    for k = 1 : length(lline)-1
        pline = [ points( mm, k) points( mm, k+1)]; % create line coordinates
        lines( count, :) = pline;
        count = count +1;
    end
   
end


einführen der Variablen "count";

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 12:21     Titel:
  Antworten mit Zitat      
Oder vielleicht macht Dich dieser Code glücklicher?

Code:
p = reshape( points', 1, []);
count = 1;
for mm = 1 : (length(p)-1)
    lines( count, :) = [ p( mm) p( mm+1)];
    count = count + 1;
end
Private Nachricht senden Benutzer-Profile anzeigen
 
JJJ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 16:24     Titel:
  Antworten mit Zitat      
Super, genau das habe ich gesucht!!!!


Ich danke dir vielmals You made my day!
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.