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

Frage zu Zusammenfügen von Arrays

 

Chris_toph
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 10.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 13:10     Titel: Frage zu Zusammenfügen von Arrays
  Antworten mit Zitat      
Hallo,

ich benötige eine 2D (2 Spalten) Liste, generiert aus 2 Listen

Also

a b c d e

und

1 2 3 4 5

will ich

1 a
1 b
1 c
1 d
1 e
2 a
2 b

Usw.

Geht das irgendwie mit Repmat, oder muss ich mir etwas basteln?

Danke Chris
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: 02.05.2013, 13:24     Titel: Re: Frage zu Zusammenfügen von Arrays
  Antworten mit Zitat      
Hallo Chris_toph,

Zitat:
a b c d e

Das könnte ein String sein, also 'a b c d e', oder ein Cell-String {'a', 'b', 'c', 'd', 'e'}. Bitte erkläre genau, was dies ist. Ansonsten raten wir vielleicht falsch und vergeuden Deine und unsere Zeit. Am besten postest Du validen Matlab-code, den wir direkt per Copy&Paste in lauffähigen Code einbetten können.

Mit dem Replizieren von Matrizen hat das nicht viel zu tun. CAT wäre wohl hilfreicher. Vielleicht in Form von:
[code]Result = [a(:), b(:)];
Aber wie gesagt: Ja nach Datentyp kann das anders aussehen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 10.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 14:31     Titel:
  Antworten mit Zitat      
Code:
list1=[1;2;3;4;5]
list2=[6;7;8;9;10]

for i = 1 : 5
    for j = 1 : 5
    x = [list1(i), list2(j,:)]
    end
end


In den Listen stehen übrigens Doublewerte.

Mein Problem: Er speichert nicht in einer einzigen Liste, ich will es aber in einer einzigen 2-spaltingen Liste!

Sorry dass ich zuerst keinen Code hatte.

Mir fehlt wahrscheinlich irgendwo die Zwischenspeicherung?

Danke Chris
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 02.05.2013, 15:09     Titel:
  Antworten mit Zitat      
Du denkst gerade zu kompliziert. du kannst die beiden Spaltenvektoren einfach nebeneinanderhängen:
Code:

[list1, list2]
 


(falls es Zeilenvektoren sind, einfach mit ' transponieren)
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris_toph
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 10.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 15:21     Titel:
  Antworten mit Zitat      
Mmmartina hat Folgendes geschrieben:
Du denkst gerade zu kompliziert. du kannst die beiden Spaltenvektoren einfach nebeneinanderhängen:
Code:

[list1, list2]
 


(falls es Zeilenvektoren sind, einfach mit ' transponieren)


Hallo,

nein ich brauche ja den ersten Eintrag des Zeilenvektors 5 Mal!

Siehe mein erstes Posting:
Zitat:
b = [a b c d e]

und

a = [1 2 3 4 5]

will ich

1 a
1 b
1 c
1 d
1 e
2 a
2 b
2 c
2 d
2 e

usw.


Das Programm das ich gemacht und gepostet habe funktioniert ja schon zufriedenstellend, ich müsste nur mehr irgendwie die Werte "absammeln" und speichern. Aber wie... Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 15:32     Titel:
  Antworten mit Zitat      
Meinst du sowas?

Code:
m=1;
for i = 1 : 5
    for j = 1 : 5
    x(m,:) = [list1(i), list2(j,:)];
    m=m+1;
    end
end
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 02.05.2013, 15:43     Titel:
  Antworten mit Zitat      
Chris_toph hat Folgendes geschrieben:

nein ich brauche ja den ersten Eintrag des Zeilenvektors 5 Mal!

Siehe mein erstes Posting:
Zitat:
b = [a b c d e]

und

a = [1 2 3 4 5]

will ich

1 a
1 b
1 c
1 d
1 e
2 a
2 b
2 c
2 d
2 e

usw.

Das Programm das ich gemacht und gepostet habe funktioniert ja schon zufriedenstellend, ich müsste nur mehr irgendwie die Werte "absammeln" und speichern. Aber wie... Sad


Ah ok...wer lesen kann... Embarassed

In deiner Schleife überschreibst du jedesmal.

Zum Sammeln musst du entweder mit einer aufsteigenden Laufvariablen arbeiten, oder deinen neuen Listeneintrag immer an den vorherigen anhängen (ist Laufzeitmäßig ungünstiger, aber bei geringer Datenmenge akzeptabel).

Also: Variante 1:
Code:

n = 1
for i = 1 : length(list1)
    for j = 1 : length(list2)
        x(n,:) = [list1(i), list2(j,:)]
        n= n+1;
    end
end
 


Code:

x=[];
for i = 1 : length(list1)
    for j = 1 : length(list2)
    x = [x;list1(i), list2(j,:)]
    end
end
 

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris_toph
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 10.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 15:49     Titel:
  Antworten mit Zitat      
Anonymous hat Folgendes geschrieben:
Meinst du sowas?

Code:
m=1;
for i = 1 : 5
    for j = 1 : 5
    x(m,:) = [list1(i), list2(j,:)];
    m=m+1;
    end
end


Subscripted assignment dimension mismatch. Shocked

Das krieg ich bei dem von Martina auch... Sehr komisch.
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris_toph
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 10.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 15:51     Titel:
  Antworten mit Zitat      
Mmmartina hat Folgendes geschrieben:


Code:

x=[];
for i = 1 : length(list1)
    for j = 1 : length(list2)
    x = [x;list1(i), list2(j,:)]
    end
end
 


Das hingegen läuft! Smile Prima! Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 16:03     Titel:
  Antworten mit Zitat      
kann es sein dass du nicht die von dir geposteten list1 und list2 verwendet hast? Very Happy
 
Chris_toph
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 10.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 16:15     Titel:
  Antworten mit Zitat      
Anonymous hat Folgendes geschrieben:
kann es sein dass du nicht die von dir geposteten list1 und list2 verwendet hast? Very Happy


Oops! Wink Ja, scheinbar hab ich da was vertauscht gehabt! Sorry!

LG Chris
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.