2016-07-04 154 views
1

由於矩陣: - A = [0 1 2 3 4 5];轉換數字數組轉換成字符串單元陣列

我想將其轉換成字符串單元陣列是這樣的:A = {'0' '1' '2' '3' '4' '5'};

我能夠做到這一點使用:

A = [0 1 2 3 4 5]; 

for i=1:6 
    A1{i}= num2str(A(i)); 
end 
A1 

我想以更簡單的方式做到這一點,沒有循環。

回答

4

另一條線法num2strstrsplit

A1 = strsplit(num2str(A)) 
+0

+1好的和快速的解決方案,但爲了兼容性和速度的原因,我建議使用'regexp'' A1 = regexp(num2str(A),'s +','split');'在我的測試中,'regexp'比「strsplit」快七倍 – serial

3

您可以結合使用arrayfunanonymous function

B = arrayfun(@(x) {num2str(x)}, A); 

cellfun是一點點更快,工作也未嘗不可:

B = cellfun(@num2str, num2cell(A), 'uni', 0); 

最快的解決方法是這樣的solution(學分的改進版本到obchardon

B = regexp(num2str(A), '\s+', 'split'); 
+1

'arrayfun'僅僅是循環的包裝,所以它基本上相同於OP。 – Dan

+0

@丹恩不完全。這實際上會給每個單元格一個數字,而OP會在每個單元格中創建一個字符串。我實際上認爲這更接近於問題所在,因爲這是生成等效代碼的唯一答案。 – patrik

+1

@Patrik我沒有看到這與OP循環之間的區別,即使對於多位數字... – Dan