我有一個char
數組格式a = [1.234 ; 2.345; 3.456]
,我需要將它轉換爲MATLAB中的數值數組。我試過str2num(a)
,但它似乎只對整數有效,因爲它返回一個空向量。以下是該數據實際上是這樣的:在matlab中將整數字符轉換爲數值數組
就如何解決這一問題的任何建議都感激!
我有一個char
數組格式a = [1.234 ; 2.345; 3.456]
,我需要將它轉換爲MATLAB中的數值數組。我試過str2num(a)
,但它似乎只對整數有效,因爲它返回一個空向量。以下是該數據實際上是這樣的:在matlab中將整數字符轉換爲數值數組
就如何解決這一問題的任何建議都感激!
如果你的字符數組或者是以下格式:
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));
str2num
會的工作,因爲它是但str2num
uses eval
,所以一個更好的選擇是str2double
。但它不直接適用於像你這樣的char數組。您可以使用cellstr
將該陣列轉換爲單元格,然後應用str2double
。
req = str2double(cellstr(val))
,如果你有MATLAB R2016b或更高版本的另一種方法是到字符數組轉換爲string array,然後應用str2double
。
req = str2double(string(val))
你不應該添加一個截圖作爲你的變量的例子,而是在這裏複製它的簡短版本。 – Irreducible
奇怪的是,'str2num(a)'應該可以工作。你能舉一個例子來說明你如何創建這樣一個數組?您也可以嘗試'cellstr(a)',將其轉換爲單元陣列 - 也許它會工作。 – Adiel