2016-10-06 2 views
1

I Array Zelle Matrizen, die Saiten mit unterschiedlicher Länge hat:Konvertieren Zelle Array von Strings mit Zahlen-Arrays

rr ={'1 2 5'; 
    '5 6 1'; 
    '12 56 2'; 
    '12 1'; 
    '343 2 -5 1 5'; 
    '1 5 3 2 0'} 

ich auf die Saiten Länge basierend verschiedenen Matrices von Zahlen und nicht die Zeichenfolge machen wollen:

a1 = [1 2 5; 5 6 1; 12 56 2] 
a2 = [12 1] 
a3 = [343 2 -5 1 5; 1 5 3 2 0] 

ich habe einen großen Satz und meine aktuellen Daten viele Matrizen wie a1, a2, a3 haben. Hier

+2

@EBH bei der Bearbeitung einer Frage, bitte auch darauf achten, unnötige Dinge zu entfernen, wie die "Bitte helfen Sie mir", vergessen Sie nicht den Titel und, falls nützlich, fügen Sie relevante Tags hinzu. – Adriaan

+2

Erstellen Sie diese Matrizen bitte nicht. Sie werden am Ende schreckliche Funktionen verwenden, die Ihren Code sowohl verschleiern als auch verlangsamen. Lassen Sie es so wie es ist, ein Zellen-Array ist perfekt in Ordnung und indexierbar. Warum willst du überhaupt so viele Variablen? Sie können nachlesen, warum das eine schlechte Idee ist (http://stackoverflow.com/questions/32467029/how-to-put-these-images-together/32467170#32467170), vor allem die Referenzen enthalten darin. – Adriaan

+0

Ich wana Zahlen verwenden. Ich habe versucht, str2num zu verwenden, aber es gibt Fehler für meine RR-Zelle – EkEhsaas

Antwort

2

ist ein Weg:

rr ={'1 2 5'; 
    '5 6 1'; 
    '12 56 2'; 
    '12 1'; 
    '343 2 -5 1 5'; 
    '1 5 3 2 0'} 

%// convert 
x = cellfun(@(x) sscanf(x,'%f'), rr,'uni',0) 
%// count 
n = cellfun(@numel,x) 
%// distribute 
s = accumarray(n,1:numel(n),[],@(ii) {x(ii)}) 
%// remove empty elements 
s = s(~cellfun('isempty',s)) 
%// assign 
m = cellfun(@(y) [y{:}].' ,s, 'uni',0) 

%// last step I'd try to avoid 
[a,b,c] = m{:}; 

a = 

    12  1 


b = 

    12 56  2 
    5  6  1 
    1  2  5 


c = 

    1  5  3  2  0 
    343  2 -5  1  5 

Ich würde Sie empfehlen, den letzten Schritt zu vermeiden und halten arbeiten, um das Zellenfeld m, wie Sie nicht wissen, in im Voraus wie viele a1, a2 ... und so weiter Sie brauchen. Strukturen sind auch eine gute Option.

+0

@EkEhsaas nein, es ist nicht möglich mit diesem Ansatz, und Sie sollten definitiv Ihren Ansatz der Verwendung mehrerer Variablennamen zu überdenken – thewaywewalk

Verwandte Themen