2016-08-01 16 views
0

Ich habe zwei (n, 1) Zellen-Arrays. Beide enthalten 1x8 Zellen-Arrays innerhalb jeder Zelle.Wie kombiniere ich das erste Element des Zellen-Arrays mit allen Elementen eines anderen Arrays und so weiter?

Ich muss:

1), wobei jedes Element der zweiten Anordnung das erste Element des ersten Arrays Kombinieren

2) Kombinieren des zweiten Elements der ersten Anordnung mit jedem Element des zweiten Arrays und so weiter.

Und dann speichern sie in einem dritten Zellenanordnung, die wie folgt aussehen:

{ {f_array1} {s_array1}; {f_array1} {s_array2}; {f_arrayN} {s_array2}; {f_arrayM} {s_arrayM}; 

Ich habe einige versucht, Schleifen wie diese:

for l = 1:u(1,1) 
    for m = 1:v(1,1) 
     A{l} = {e{l},f{m}}; 
    end 
end 

Aber in nur kombiniert die ein Element mit nur einem Element.

Irgendwelche Vorschläge?

+0

meinst du A {l, m}? –

+0

Nein, nur A {l}. Warum? – marco

+1

könnten Sie ein Beispiel für Ihre Eingabe und Ausgabe geben? –

Antwort

2

Ich würde repmat auf die Zellen-Arrays verwenden, um sie zu erweitern und dann einfach verketten.

f_array = {{{1} {1} {1} {1} {1} {1} {1} {1}},... 
    {{2} {2} {2} {2} {2} {2} {2} {2}},... 
    {{3} {3} {3} {3} {3} {3} {3} {3}}}; 
s_array = {{{4} {4} {4} {4} {4} {4} {4} {4}},... 
    {{5} {5} {5} {5} {5} {5} {5} {5}},... 
    {{6} {6} {6} {6} {6} {6} {6} {6}}}; 


f_expanded = repmat(f_array(:), numel(s_array), 1); 
s_expanded = repmat(s_array(:), 1, numel(f_array)).'; 

output = num2cell(cat(2, f_expanded(:), s_expanded(:)), 2); 
+0

Danke für die Hilfe, es hat irgendwie funktioniert. Das Problem ist, dass es nicht mit dem ersten, zweiten, dritten, vierten und so weiter übereinstimmt. Es kopiert nur die zweite N-mal die erste. – marco

+0

Eigentlich stimmt es die Übereinstimmung korrekt ab, aber es stimmt jedes der zweiten Array-Elemente mit drei Elementen des ersten überein :( – marco

+0

@marco Also, was ist, wenn du nur den flippst, den ich 'f_array' und' s_array' nenne? – Suever

Verwandte Themen