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

Matrix mehrmals wiederholen...

 

shinigami
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 22.12.2016, 11:53     Titel: Matrix mehrmals wiederholen...
  Antworten mit Zitat      
Hallo Zusammen,

versuche ein Problem zu lösen, um ohne Sorgen in die Feiertage gehen zu können.
Problem:
Ich erzeuge eine Folge von Matrizen
Code:

0   0   0   1
0   0   1   0
0   0   0   0
0   0   1   0

0   1   0   1
0   0   1   1
1   1   0   0
0   1   1   0

0   1   0   1
1   0   1   0
1   1   0   1
1   1   0   0
, aber ich möchte nun das die erste Matrix zweimal hintereinander kommt, dann die zweite Matrix zwei mal in Folge usw. ...

Nochmal einfacher ausgedrückt:
- sei A, B, C eine 4x4 Matrix
Code:

, als nächstes
Code:
A
A
B
B
C
C

Ich weiß sieht zwar einfach aus, aber wenn ich mehrere 100 Matrizen hintereinander erzeuge wird das nicht mehr so überschaubar. Smile
Wie kann ich das am besten realisieren?

Gruß und noch schöne Feiertage ALLEN
Nick
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: 22.12.2016, 12:09     Titel:
  Antworten mit Zitat      
Hallo,

repmat oder repelem sollten helfen, ggf. in Kombination mit reshape .

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 22.12.2016, 13:21     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für die schnelle Antwort.
Ich habe die Befehle mir angesehen und das sind auch genau die die ich auch benötige, aber ich schaffe es nicht dass er die Matrix wiederholt wie es mir vorstelle.
Ich schaffe es nicht, dass die Matrix nach meinem Wunsch wiederholt wird.
Hättest Du vllt. einen Tipp?

Gruß
Nick
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: 22.12.2016, 13:43     Titel: Re: Matrix mehrmals wiederholen...
  Antworten mit Zitat      
Hallo shinigami,

Dann poste doch mal Deinen Code und erkläre, was nicht funktioniert.
In welcher Form hast du denn die "mehreren hundert" Matrizen gespeichert? Hoffentlich nicht in der Art "A, B, C, ..."
Genau davon hängt aber die Lösung ab. Also erkläre nochmal genau , was Deine Inputs sind.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 22.12.2016, 14:00     Titel:
  Antworten mit Zitat      
Hallo,

also der Code sieht wie folgt aus:
Code:
E=round(rand(4));
t = 1;
for i= 1 : t
    E = [round(E) ; round(rand(4))];
end

N = repelem(E,[2],1)


Ich schaffe es aber nicht, dass die ersten 4 Zeilen nach meiner Vorgabe wiederholt werden, dann die nächsten 4 Zeilen usw. Ich möchte quasi mit einer Variablen vorgeben wie oft die Matrix wiederholt wird-
Also dies erhalte ich mit dem Code:
Code:

0   1   0   1
0   0   1   0
1   0   0   1
1   0   1   1
__________________
0   1   1   1
1   1   0   1
0   0   0   0
1   0   1   0

und möchte z.B. das es zweimal oder dreimal wiederholt wird:
Code:

0   1   0   1
0   0   1   0
1   0   0   1
1   0   1   1
0   1   0   1
0   0   1   0
1   0   0   1
1   0   1   1
__________________
0   1   1   1
1   1   0   1
0   0   0   0
1   0   1   0
0   1   1   1
1   1   0   1
0   0   0   0
1   0   1   0
 

Wie muss ich das machen?

Gruß
Nick
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: 22.12.2016, 21:36     Titel:
  Antworten mit Zitat      
Hallo shinigami,

Das ist eine ineffiziente Methode, die Daten zu erstellen. Vermeide das iterative Vergößern eines Arrays unbedingt. Suche dazu im Forum nach "pre-allocation".

"round(rand))" ist nicht wirklich sinnvoll. Naja.

Die Matrix mit einer Linie nach den ersten 4 Elementen darzustellen, ist verwirrend. Da ist keine Linie in Matlab. Was möchtest Du damit ausdrücken?

Code:
E = randi([0,1], 8, 4);
EE = reshape(E, 4, 4, 2);
N = repmat(EE, [2,1,1])
N = reshape(N, [], 4);

Du möchtest also die 4er Blöcke entlang der ersten Dimension verdoppeln. Dann nimmt man besser ein 3D-Array - das ist es nämlich eigentlich, was Du mit dieser ominösen Linien darstellen wolltest, oder? Wenn man also per reshape eine 3D-Matrix erstellt hat, klappt das verdoppeln mit repmat gut.

Ich habe nochmal die Dokumentation von repelem gelesen. Hm. Irgendwie wird mir nicht klar, wie der Befehl auf Arrays wirkt. Seltsam.
Code:
N = reshape(permute(repelem(EE, 1,1,2), [1,3,2]), [], 4)

Ich hätte da eigentlich keine permute vermutet. Vielleicht bekommt man es auch ohne hin.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 02.01.2017, 16:59     Titel:
  Antworten mit Zitat      
Hallo Jan,

zunächst DANKE und ja die meine Darstellung hätte genauer sein können, werde es beim nächsten mal genauer beschreiben.

Gruß
Nick
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.