Как преобразовать строку «пи» в удвоение? (MATLAB 2015a) - PullRequest
2 голосов
/ 26 февраля 2020

Когда я пытаюсь преобразовать строку 'pi' в двойную, она преобразуется в NaN.

>> str2double('pi')

ans =

   NaN

Я читаю файл, который содержит значения, разделенные запятыми, которые могут включать кратное число pi , Например (предположим, что pi_in_string был прочитан из файла):

>> pi_in_string = '0,1,-pi/6'

pi_in_string =

0,1,-pi/6

>> split_string = strsplit(pi_in_string, ',')

split_string = 

    '0'    '1'    '-pi/6'

>> str2double(split_string)

ans =

     0     1   NaN

Ответы [ 2 ]

3 голосов
/ 26 февраля 2020

Я понял, что мне нужно использовать str2num вместо str2double, но str2num не работает с массивом ячеек. Поэтому вместо этого я перебрал элементы в массиве ячеек, сначала преобразовав каждый из них в тип char, а затем используя str2num.

pi_in_string = '0,1,-pi/6';
str_array    = strsplit(pi_in_string, ',');  %str_array now cell array
num_elements = length(str_array);            %get # elements to loop
num_vector   = zeros(1,num_elements);        %initialize vector

                                             %loop through elements in str_array
for i = 1:num_elements                       %converting each element first to type char

    num_vector(i) = str2num(char(str_array(i)));

end
0 голосов
/ 27 февраля 2020

Легко избежать for l oop и явной инициализации массива num_vector с помощью команды cellfun:

pi_in_string = '0,1,-pi/6';
str_array = strsplit(pi_in_string, ',');
num_vector = cellfun(@(x)eval(x), str_array, 'UniformOutput', true)

num_vector =
     0    1.0000   -0.5236
...