У меня есть некоторые числовые данные положительной функции с рядом «нулей», однако ни один из этих нулей никогда не равен нулю. Я хотел бы извлечь позиции всех этих нулевых значений и задавался вопросом, что лучший способ сделать это. Вот надуманный пример, который похож на то, что я хотел бы решить, с иллюстративным участком значений, смежных различий, а также признаки этих различий:Как численно искать все самые близкие к нулю значения в массиве Matlab?
a = [ 0.0062 ; 0.0041 ; 0.0021 ; 0.0003 ; 0.0015 ; 0.0031 ; 0.0045 ; 0.0059 ; 0.0062 ; 0.0041 ; 0.0021 ; 0.0003 ; 0.0015 ; 0.0031 ; 0.0045 ; 0.0059 ]/0.0062 ;
d = diff(a) ;
r = -3/2:0.5:length(a)/2-4/2 ;
close all ;
hold on ;
plot(r, a) ;
plot(r(1:length(d)), d) ;
plot(r(1:length(d)), sign(d)) ;
Который производит:
Основываясь на том, что я сделал, я мог бы перебрать массив и найти все места, что изменение знака разницы массива от -1 до 1. Два вопроса:
- Есть ли лучший способ сделать это, чем для цикла?
- Есть ли лучший способ сделать этот поиск всех мини-залов?
Итак, с вашим примером 'a', каков был бы желаемый результат? –
Если у вас есть определенный допуск, вы можете попробовать использовать ['find'] (http://www.mathworks.com/help/matlab/ref/find.html). например 'idx = find (abs (a) <допуск)' – excaza
Индексы массивов, которые содержат значения 0.003/0.0062. Соответствующие значения в числовом диапазоне r действительно являются тем, что я за ним, но я могу сделать это окончательное отображение. –