[英]Matlab: 2D cell array to char array
我想知道是否有一種很好的方法可以將2D單元陣列轉換為2D char矩陣。
單元格數組如下所示:
'test' 'me' '0' '22'
'tester' 'me' '14' '241'
'test' 'you' '25' '1'
現在,我想在各列之間放置空格,並使整個內容成為char數組。 意思是我想要這個:
'test me 0 22 '
'tester me 14 241'
'test you 25 1 '
或這個
'test me 0 22'
'tester me 14 241'
'test you 25 1'
你能幫我嗎? 我嘗試了char()
但它並不關心單元格數組是2D的,只為單元格數組中的每個元素創建一行。
編輯:如果有人想找回串聯行的單元格數組,請看此單元格數組Matlab的合並列
非常感謝!
好吧, char
使您進入其中的一部分,然后進行一些重塑等工作,其余的工作:
out = char(C');
out(:,end+1)=' ';
out = reshape(out',[28,3]);
out = out';
(其中可能有多余的空間)
但是,更好的方法可能是將內部字符串填充到單元格數組中,以便每一行的總長度相同,然后添加
f = @(x) [x,' '];
% need at least one space after each entry
C = cellfun(f,C,'UniformOutput',0);
% now work out how much extra length needed
l = cellfun(@length,C);
l = sum(l,2);
l = max(l)-l;
% pad
for n = 1:length(l)
C{n,end} = [C{n,end},blanks(l(n))];
end
現在我們需要的是:
cell2mat(C)
ans =
test me 0 22
tester me 14 241
test you 25 1
我只能看到在匹配簡單循環指定的格式的同時如何做,如果格式不重要,可以使用char和reshape像nkjt那樣重整,那是我所能看到的最好的...
cellArray={ snip };
outp=[]
for ii=1:size(cellArray,2)
outp=[outp str2mat(cellArray(:,ii)) blanks(size(cellArray,1))'];
end
使用str2mat
以列方式str2mat
以將每列連接到一個(填充的)char數組中,添加一個尾隨空格,然后添加到輸出中。
結果:
outp =
test me 0 22
tester me 14 241
test you 25 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.