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

Wie Matrix zeilenweise in einer Schleife füllen?

 

Hiwi-Job
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 04.10.2011, 18:58     Titel: Wie Matrix zeilenweise in einer Schleife füllen?
  Antworten mit Zitat      
Hallo Forum,

wie kann ich eine Matrix zeilenweise innerhalb einer Schleife füllen?

Es geht darum Werte für den Befehl patch() in eine Matrix zu schreiben. Damit dieser Befehl mehrere Objekte (bei mir Kästchen) zeichnen kann, müssen die x-Werte der Eckpunkte in einer Matrix stehen, die y-Werte der Eckpunkte in einer zweiten. Wenn nun mehrere Objekte gezeichnet werden sollen, müssen die vier Eckpunkte eines Objektes in einer Zeile der Matrix stehen.

Wie kann ich in einer Schleife diese Matrix zeilenweise erweitern?

Ich hoffe ihr versteht meine Frage. Wink

Viele Grüße
Ingo
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2011, 19:35     Titel:
  Antworten mit Zitat      
Hallo,

grundsätzlich ist das zeilenweise Belegen von Zeilen kein Problem:

Code:
M = zeros(m, n);
for I = 1:m
M(I,:) = ......;
end


Mein Eindruck ist allerdings, dass das nicht das ganze Problem ist?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 04.10.2011, 21:02     Titel:
  Antworten mit Zitat      
Hm....... ich sehe da noch nicht ganz durch.

Mein code sieht bisher so aus:
Code:
var1=1;
for j=1:ende
.....
var2=var1+4;
x(var1:var2)=[xpos1,xpos2,xpos3,xpos4];
y(var1:var2)=[ypos1,ypos2,ypos3,ypos4];
var1=var2;
end
patch(x,y,Farbe)
.....


Damit kann ich den Vektor zwar immer weiter vollschreiben, aber halt keine Matrix erstellen, bei der bei jedem Aufruf eine neue Zeile erzeugt wird. Das bedeutet dann für den patch()-Befehl, dass er eine Fläche mit ganz vielen Eckpunkten erzeugt, statt vieler Objekte mit je 4 Ecken.

Grüße
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2011, 21:46     Titel:
  Antworten mit Zitat      
Hallo,

das sieht recht umständlich aus. Warum nimmst du nicht die Schleifenvariable j zur Hilfe? Wie man eine Matrix zeilenweise befüllt, sollte aus meinem Beispiel hervorgehen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 04.10.2011, 22:25     Titel:
  Antworten mit Zitat      
Ok, vielen Dank schon mal.

Mein Code sieht dann nun so aus:
Code:

...
x=zeros(Ende,4);
y=zeros(Ende,4);
for j=1:Ende
...
x(j,:)=[xpos1,xpos2,xpos3,xpos4];
y(j,:)=[ypos1,ypos2,ypos3,ypos4];
...
end
...
patch(x,y,Farbe);
...
 


Die Matrix wird nun vollständig und richtig erstellt, Danke!

Leider erstellt mir der Befehl noch immer keine einzelnen Kästchen sondern nur eine zusammenhängende Fläche bereit???


Grüße
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2011, 23:34     Titel:
  Antworten mit Zitat      
Hallo,

versuche es doch erst mal mit einem Patch?
Insbesondere solltest du, wenn du eine geschlossene Fläche möchtest, am Ende zum ersten Punkt zurückkehren, z.B.
Code:
patch([1 -1 -1 1 1], [1 1 -1 -1 1])


Zudem:
Zitat:
If X and Y are matrices, MATLAB draws one polygon per column


Das legt nahe, dass du die Matrix spaltenweise aufbauen solltest.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 05.10.2011, 17:34     Titel:
  Antworten mit Zitat      
Hallo Harald,

Rolling Eyes Rolling Eyes Rolling Eyes ich war wohl nicht mehr ganz wach. Mit dem Vertauschen der Zeilen und Spalten konnte ich/ konntest du! das Problem lösen.

Vielen Dank noch einmal für deine Hilfe.

(xpos1 entsprach immer xpos4)

Grüße
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
grille84
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2014, 08:38     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mal eine Frage zum schreiben von Vektoren in andere Vektoren, wobei nur Teilsummen in den neuen Vektor geschrieben werden. Dies ist abhängig von einer Bedingung.

Aber hier ein Auszug aus dem Code:

Code:

Tage = 1
Zeilen = 1;
Spalten = 96;
Anfang = (Zeilen-1)*96+1
disp(Anfang);
Ende = (Zeilen-1)*96+Spalten*Tage
disp(Ende);
disp(Differenz = Ende-Anfang+1);
for i = Anfang:Ende
   
   
        if value(i)>Schwellwert
        Vektor = value(i)
         mprintf('Wert für Vektor\n')
        disp(Vektor);
        disp(i);    
        end
 


Nochmal konkret: Wie schaffe ich es den Vektor unter Einbehalt der Bedingungen mit den Werten von value nacheinander zu füllen, sodass ich am Ende der Schleife einen Vektor habe mit unbekannter Länge.

Vielen Dank im Voraus

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