Как определить, является ли входное соотношение или число с плавающей точкой в ​​Matlab? - PullRequest
0 голосов
/ 15 декабря 2018

Мне нужно для пакетной обработки текстовых файлов с смешанными единицами, , то есть целыми числами и числами с плавающей запятой (которые представляют собой масштабированные логарифмические приближения неизвестных рациональных или иррациональных чисел).Как Matlab может определить, какой вход какой?Будет ли сканирование для "."или символ '/' будет лучшим?

252,63

4/3

757,89

2/1

В этом примере я понимаю, что числа представляют значения в возрастающейпорядок (но в смешанных единицах, что типично для моей области обучения), и я обработал бы 252.63 и 757.89 иначе, чем 4/3 и 2 / 1.

Я не нашел функции в Matlab какisa(x, 'rat'), где x - любая из строк в приведенном выше списке, а 'rat' - это отношение.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Спасибо за ваши советы.С вашей помощью я остановился на этом (на строку файла данных):

x = fgetl(fileId);
if isnan(str2double(x)) == true
    % Interpret string as ratio number
    x = str2num(x);
    % then convert to musical cents,
    s(i) = log(x) / log(2) * 1200;
else
    % convert string to float, already in cents.
    s(i) = str2double(x);
end
0 голосов
/ 15 декабря 2018

Matlab может довольно просто искать строки для определенных символов.

slashmask     = str == '/'; % returns false for every character in str that's not a slash, and true for every one that is.
slashdetected = any(slashmask); % returns false if no character is a slash.

если все, что вам нужно сделать, это взять соотношение и оценить его, а затем использовать его так же, как и числа с плавающей точкой, вы можете просто использовать функцию "eval", чтобы получить эквивалент с плавающей точкой.

...