2013-03-16 208 views
3

的矢量我有這樣的:轉換字符串數組爲數字

d = {'2.5', '3.5'}; 
d = 
'2.5' '3.5' 

如何將其轉換爲數字向量?

d = 2.5 3.5 
+0

str2num(d)表示'需要字符串或字符數組輸入'。實際數組中有很多值,所以不要一個一個地去做。 – abhishek 2013-03-16 00:38:10

+1

已經被回答了很多次,但是看到我對如何在單元陣列的每個元素上應用'str2num'(或更好的'str2double')的回答。 – gevang 2013-03-16 00:58:14

回答

6

既然你有字符串值的單元陣列,可以使用cellfun對每個條目適用str2num轉換。輸出將是轉換值的向量/矩陣。

d = {'2.3','3.5'} 
dVec = cellfun(@str2num, d); 

但是,你正在使用更好比str2doublestr2num.documentation

注:str2num使用eval函數的輸入參數轉換。 如果字符串包含對函數的調用,則可能會出現副作用。 使用str2double可以避免一些這些副作用。

dVec = cellfun(@str2double, d); 

更新:作爲@yuk所指出的,你可以直接在單元陣列相同的輸出上調用str2double()

dVec = str2double(d); 

注意與str2num()相同的呼叫會給「必須是一個字符串或字符串數​​組」錯誤。

+4

你不需要cellfun。 str2double完美適用於單元陣列。 – yuk 2013-03-16 01:50:41

+1

@yuk好點。更新。作爲一個側面說明,雖然這隻適用於'str2double()',而不適用'str2num()'。 – gevang 2013-03-16 04:14:14

+0

str2double比使用string2mat的cellfun慢10-20%左右。 – Max 2017-01-20 19:01:43