Следующий код встраивается в функцииНайти заявление в MATLAB и несколько условий
rsp = find(response_times >= current1 & response_times < current2 & response_times ~= current2);
Здесь я ищу для индексов ответов, которые происходят между current1
и current2
, где current1
и current2
времена, такие как 16.22 и 16.32 соответственно, а время отклика может быть равно current1
, но не current2
.
По большей части это работает, как и предполагалось, однако, каждый раз он вытягивает индекс значения, равного current2
.
Кто-нибудь знает, почему это может быть так, или как я могу улучшить эту строку кода, чтобы исправить ее.
Вот пример массива этот код работает на:
response_times = [ 8.73000000000000
11.4300000000000 13.4800000000000
14.7900000000000 16.3200000000000
18.0400000000000 20.3800000000000
20.9900000000000 21.3400000000000
24.2800000000000 24.6800000000000 ];
Я вижу. Я читал об этом; однако это не меняет того факта, что мне нужна эта функция для работы по назначению. Есть ли способ сказать Matlab для работы с десятичными данными? – cwdaniels
@cwdaniels Ну, он работает, и нет никакого способа изменить его, если вы не округлите до целых чисел. С десятичными данными вам нужно установить порог. При сравнении двух поплавков для равенства обычно используется нечто вроде 'abs (f1-f2) tol' и установить' tol' достаточно низко, чтобы отклонить эти слишком близкие точки. –
chappjc
Я преобразовал все мои значения в целые числа, которые фиксировали часть моей проблемы. Я понял, что существенная потеря данных, которые я испытывал, на самом деле была вызвана заявлением о состоянии на ранней стадии функции, которая задавала вопрос о том, было ли какое-то значение меньше или больше 25 ... оно выкидывает испытания, в которых это произошло. – cwdaniels