2016-11-09 1 views
1

Ich habe ein Zellen-Array erstellt und möchte das Befehlsfensterformat für dieses Zellen-Array erhalten.So erhalten Sie das Befehlsfensterformat für vorhandene 'Zellen-Arrays' MATLAB

Zum Beispiel: Ich habe ein 5x2 Zellenfeld mit der Befehlszeile erstellt:

MyCell = {'time' , 'timestamp';'posX', {'DePositionX', 'DePositionXmm'};'posY', {'DePositionY', 'DePositionYmm'};'velocityX', 'DeVelocityX';'velocityY', 'DeVelocityY'}; 

Ebenso habe ich ein MxN Zellenfeld bereits erstellt (nicht von mir), und ich will die Struktur der Zelle erhalten in ein Befehlsfensterformat wie im obigen Code gezeigt. Kannst du mir sagen, ob es einen Weg oder Befehle gibt, um das zu bekommen?

Danke.

+1

Sie müssten Ihre eigene Zeichenfolge erstellen. Es gibt keinen einfachen Weg, nein. – thewaywewalk

+0

Siehe, ob [dies] (http://stackoverflow.com/a/38553646/2586922) hilft –

Antwort

0

Hier ist eine Funktion, die erreichen sollte, was Sie wollen. Es ist eine rekursive Version von Per-Anders Ekströms cell2str (https://www.mathworks.com/matlabcentral/fileexchange/13999-cell2str). Es sollte zumindest mit Zellen-Arrays funktionieren, deren Elemente (rekursiv) vom Typ cell, char, numerisch oder logisch sind.

function s = cell2str(C) 

% input checking 
if ~iscell(C) || ~ismatrix(C) 
    error('Input must be a 2-d cell array'); 
end 

% get size of input 
S = size(C); 

% transpose input so will be traversed in rows then columns 
C = C.'; 

% initialize output string with open bracket 
s = '{'; 

% iterate over elements of input cell 
for e = 1:numel(C) 
    if ischar(C{e}) % if element is char, return a string that will evaluate to that char 
     s = [s '''' strrep(C{e},'''','''''') '''']; 
    elseif iscell(C{e}) % if element is cell, recurse 
     s = [s cell2str(C{e})]; 
    else % if element is not char or cell, try to convert it using mat2str 
     s = [s mat2str(C{e})]; 
    end 
    % add a semicolon if at end of row or a comma otherwise 
    if mod(e, S(2)) 
     s = [s ',']; 
    else 
     s = [s ';']; 
    end 
end 

% complete output string with closing bracket 
s = [s '}']; 

Um es mit dem Zellenfeld überprüfen Sie zur Verfügung gestellt, die Anweisung

isequal(MyCell, eval(cell2str(MyCell))) 

true ergibt.

+0

Es hat funktioniert. Prost. –

Verwandte Themen