# Str2double gives NaN

26 views (last 30 days)
Praveen Kumar on 30 Jan 2023
Edited: Stephen23 on 2 Feb 2023
X = ["3.716,3.711,3.719,3.714,3.714,3.711,3.722,3.712,3.715,3.715,3.717,3.721,3.713,3.714,0.000"];
Y = str2double(X);
I am trying to convert the above string to double. However, using above code, the Y value is 'NaN'.
'str2num(X)' gives appropriate/required results.
Y = [3.71600000000000 3.71100000000000 3.71900000000000 3.71400000000000 3.71400000000000 3.71100000000000 3.72200000000000 3.71200000000000 3.71500000000000 3.71500000000000 3.71700000000000 3.72100000000000 3.71300000000000 3.71400000000000 0]
However, 'str2num' is not supported in code generation. Is there any alternative?

Stephen23 on 30 Jan 2023
X = "3.716,3.711,3.719,3.714,3.714,3.711,3.722,3.712,3.715,3.715,3.717,3.721,3.713,3.714,0.000";
str = X{1}; % character vector
idx = str==',';
idy = diff([true,idx,true]);
idb = find(idy<0);
ide = find(idy>0)-1;
num = numel(idb);
tmp = cell(num,1);
for k = 1:num
tmp{k} = str(idb(k):ide(k));
end
vec = str2double(tmp)
vec = 15×1
3.7160 3.7110 3.7190 3.7140 3.7140 3.7110 3.7220 3.7120 3.7150 3.7150
Praveen Kumar on 2 Feb 2023
Thank you very much. Understood!

Askic V on 30 Jan 2023
Try this:
X = "3.716,3.711,3.719,3.714,3.714,3.711,3.722,3.712,3.715,3.715,3.717,3.721,3.713,3.714,0.000";
newStr = split(X,',')
Y = str2double(newStr)
Praveen Kumar on 30 Jan 2023
Thanks for the quick response. Even though the code works, 'split' is not supported in C/C++ code generation.

Askic V on 30 Jan 2023
Edited: Askic V on 30 Jan 2023
I would also like to suggest this solution:
X = "3.716,3.711,3.719,3.714,3.714,3.711,3.722,3.712,3.715,3.715,3.717,3.721,3.713,3.714,0.200";
f = strfind(X, ","); % find indices of delimiter
Y = zeros(1, numel(f)+1); % initialize output array
X_char = convertStringsToChars(X);
j = 1;
for i = 1:numel(f)
start = j;
Y(i) = str2double(X_char(j:f(i)-1));
j = f(i)+1;
end
Y(end) = str2double(X_char(f(i)+1:end)); % add last element
Y
Y = 1×15
3.7160 3.7110 3.7190 3.7140 3.7140 3.7110 3.7220 3.7120 3.7150 3.7150 3.7170 3.7210 3.7130 3.7140 0.2000

### Categories

Find more on Characters and Strings in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!