2017-09-04 78 views
-1

我有一個char數組格式a = [1.234 ; 2.345; 3.456],我需要將它轉換爲MATLAB中的數值數組。我試過str2num(a),但它似乎只對整數有效,因爲它返回一個空向量。以下是該數據實際上是這樣的:在matlab中將整數字符轉換爲數值數組

enter image description here

就如何解決這一問題的任何建議都感激!

+0

你不應該添加一個截圖作爲你的變量的例子,而是在這裏複製它的簡短版本。 – Irreducible

+0

奇怪的是,'str2num(a)'應該可以工作。你能舉一個例子來說明你如何創建這樣一個數組?您也可以嘗試'cellstr(a)',將其轉換爲單元陣列 - 也許它會工作。 – Adiel

回答

0

功能str2double將適用於您的情況。詳細用法請參考this link

+0

我有一個3100x18'char',它用'str2double'返回一個1x1'NaN' – Uttara

2

如果你的字符數組或者是以下格式:

a = '[1.234; 2.345; 3.456]';  % 1-by-N with brackets, spaces, or semicolons 
a = ['1.234'; '2.345'; '3.456']; % M-by-N 

然後str2num應該工作,只要你想:

vec = str2num(a) 

vec = 

    1.234000000000000 
    2.345000000000000 
    3.456000000000000 

如果它不工作然後這可能意味着你的字符數組val具有無效格式的行或無法正確轉換的字符。由於該數組有3100行,因此您可能不希望手動搜索它。突出顯示無效行的位置的一個簡單方法是確定除數字,句點或空格之外的其他字符。這裏是你如何能得到行的列表,可能需要進一步的檢查:

suspiciousRows = find(~all(ismember(val, '. '), 2)); 
0

str2num會的工作,因爲它是但str2num uses eval,所以一個更好的選擇是str2double。但它不直接適用於像你這樣的char數組。您可以使用cellstr將該陣列轉換爲單元格,然後應用str2double

req = str2double(cellstr(val)) 

,如果你有MATLAB R2016b或更高版本的另一種方法是到字符數組轉換爲string array,然後應用str2double

req = str2double(string(val))