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"mischung"

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 20:36     Titel: Matrix"mischung"
  Antworten mit Zitat      
Hallo allerseits,

ich arbeite mich derzeit in Matlab ein. Soweit klappt auch vieles, allerdings habe ich jetzt eine Frage, welche Expertren wohl langweilen wird.

Ich habe

Matrix a
Matrix b
Matrix c(12 verschiedene, also c1 -c12)

Matrix b wird in a 12x ausgeführt. Funktioniert einwandfrei, wie ich es will. Bis hier hin also kein Problem Smile

Nun habe ich Matrix c 12 mal. Alle gleich groß nur verschiedener Inhalt. Ich will, dass die matrizen c1 - c12 durchgemixt werden, also nicht mehr in einer Reihenfolge sind.

Ich hoffe es ist möglich mit meinen Ausführungen etwas anzufangen.

Viele Grüße


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.08.2011, 20:49     Titel:
  Antworten mit Zitat      
Hallo,

das sieht man mal wieder, warum viele User inkl. mir empfehlen, von solchen Variablenlisten Abstand zu nehmen. Steck die Variablen doch in ein Cell Array:
Code:
c = {c1, c2, c3...}

(natürlich schon bei der Erzeugung)

Dann kannst du das ganz einfach machen:
Code:


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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 21:05     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

das sieht man mal wieder, warum viele User inkl. mir empfehlen, von solchen Variablenlisten Abstand zu nehmen. Steck die Variablen doch in ein Cell Array:
Code:
c = {c1, c2, c3...}

(natürlich schon bei der Erzeugung)

Dann kannst du das ganz einfach machen:
Code:


Grüße,
Harald


Danke für die schnelle Antwort! Smile
Also sähe das dann innerhalb von b ca so aus:

Code:
function b
c1 = [bla]
c2 = [bla]
...
c12 = [bla]

c = {c1, c2, ...,c12}
c = c(randperm(1:12))
end

 
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.08.2011, 22:43     Titel:
  Antworten mit Zitat      
Hallo,

bzw. gleich
Code:

function b
c = cell(1,12);
c{1} = [bla];
c{2} = [bla];
...
c{12} = [bla];
c = c(randperm(1:12));
end

oder
Code:

function b
c = cell(1,12);
for I=1:12
c{I} = [bla in Abh. von I];
end
c = c(randperm(1:12));
end


Grüße,
Harald

P.S.: Du hast am Anfang "Matrix B" geschrieben. Du meinst aber anscheinend eine Funktion.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2011, 23:01     Titel:
  Antworten mit Zitat      
Ja, diese Funktion soll eine Matrix zusammenstellen, indem sie die 12 verschiedenen "c-Matrizen" durcheinanderwürfelt und aneinander hängt.

Jede der c-Matrizen hat 10 Zeilen.

Könnte dann z.B. So aussehen:

Matrix b beinhaltet

c4
c11
c1
c2
c7
c12
c3
c2
c9
c6
c4
c5

und hat somit dann 120 Zeilen (jedes c liefert ja 10 Zeilen).

In Funktion a (bildet die endgültige Matrix) wird die mittlere mittlere Matrix (b) 12x hintereinander ausgeführt. Das funktioniert auch schon vom code her. So stehen am ende dann 1440 Zeilen.
Ich will quasi nur die kleinesten c-Matrizen anstatt in einer 1-12er Reihenfolge immer neu durcheinander mischen lassen. Ohne, dass sich die Reihenfolgen innerhalb der c-Matrizen ändert.

Danke für deine Geduld Harald!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.08.2011, 00:13     Titel:
  Antworten mit Zitat      
Ist da nun noch eine Frage? Wenn ja, verstehe ich sie nicht.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2011, 11:18     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Ist da nun noch eine Frage? Wenn ja, verstehe ich sie nicht.

Grüße,
Harald


Ich glaube, dass ich mich selber etwas verwirrt habe. Bin noch eher am Anfang.

Innerhalb der Funktion B welche eine Matrix erzeugen soll, möchte ich, dass eine Spalte zufällig aus 12 Elementen zusammen gestellt werden soll (C). C sieht wie folgt aus:

c1 = [1 1 3 4 2 3 1 2 4 4]';
c2 = [3 1 3 4 2 1 3 2 4 2]';
c3 = [1 3 1 2 4 1 3 4 2 2]';
c4 = [1 3 1 4 2 3 1 4 2 4]';
c5 = [3 1 1 2 4 1 3 2 4 4]';
c6 = [1 3 3 4 2 1 3 4 2 2]';

c7 = [1 1 3 4 2 3 1 2 4 4]';
c8 = [3 1 3 4 2 1 3 2 4 2]';
c9 = [1 3 1 2 4 1 3 4 2 2]';
c10 = [1 3 1 4 2 3 1 4 2 4]';
c11 = [3 1 1 2 4 1 3 2 4 4]';
c12 = [1 3 3 4 2 1 3 4 2 2]';

Und diese C sollen aber nicht nur von 1:12 gezeigt werden. Sondern durchgemixt.

Dodass die 120 lange Spalten dann unter anderem so aussehen kann:

c4
c11
c1
c2
c7
c12
c3
c2
c9
c6
c8
c5

Hoffe, dass meine Ausführungen jetzt etwas besser oder verständlicher sind. Habe gemerkt, dass es oben etwas schwammig bzw. unkonkret war.
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2011, 16:29     Titel:
  Antworten mit Zitat      
Code:
function b
c = cell(1,12);
for I=1:12
c{I} = [bla in Abh. von I];
end
c = c(randperm(1:12));
c = horzcat(c{:});
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.08.2011, 18:14     Titel:
  Antworten mit Zitat      
Zum obigen Vorschlag:
da die Matrixteile ja untereinander sollen, sollte VERTCAT statt HORZCAT verwendet werden.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2011, 18:23     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Zum obigen Vorschlag:
da die Matrixteile ja untereinander sollen, sollte VERTCAT statt HORZCAT verwendet werden.

Grüße,
Harald


Genau Smile es sollen die Zeilen von C untereinander sodass es 120 Zeilen hat.

Danke an euch beide und beste Grüße Smile
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2011, 18:26     Titel:
  Antworten mit Zitat      
Das mit I in Abhängigkeit von ... habe ich nicht verstanden. Wäre es möglich Haralds Vorschlag zu nutzen der so war?

Code:

function b
c = cell(1,12);
c{1} = [bla];
c{2} = [bla];
...
c{12} = [bla];
c = c(randperm(1:12));
end
 
 
Harald
Forum-Meister

Forum-Meister


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

du kannst die Vorschläge quasi so kombinieren, wie du willst.
Wenn sich die einzelnen Matrizen automatisiert generieren lassen, wäre die Variante mit I eben übersichtlicher.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 10:57     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

du kannst die Vorschläge quasi so kombinieren, wie du willst.
Wenn sich die einzelnen Matrizen automatisiert generieren lassen, wäre die Variante mit I eben übersichtlicher.

Grüße,
Harald


Ok, ich werde dann erstmal das ohne I versuchen, damit komme ich denke ich rerstmal zum Testen besser klar.

Es ist ausgeschlossen, dass sich innerhalb der einzelnen c (x) etwas an der Reihenfolge ändert, oder? Das einzige, was variieren wird wird ist die Abfolge der c (x) in der gesamten c?
 
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.