Форум: "Потрепаться";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
ВнизЗвуковая... Найти похожие ветки
← →
Sergo (2002-04-15 10:47) [0]Не подскажете, как при снятии сигнала со входа звукахи, брать только амплитудное (положительное) значение сигнала, не принимая на счет текущее изменение амплитуды?
У меня есть мысль, но я в ней не уверен, может чем нибудь поможете?
← →
VictorT (2002-04-15 11:41) [1]Проинтегрируй сигнал.
← →
Sergo (2002-04-15 11:48) [2]>VictorT ©
Мысль, спасибо!
← →
VictorT (2002-04-15 11:57) [3]Честно говоря, не совсем понял вопрос, и ответил по принцыпу: какой вопрос - такой ответ :) Но я рад, что тебе это помогло.
← →
Sergo (2002-04-15 12:05) [4]Смысл такой: я подаю на звукаху сигнал определенной амплитуды, к примеру 20db, и эта амплитуда будет изменяться очень редко. Если сразу выводить значение сигнала например в Label, то будет показываться изменение амплитуды от 20db до -20db (синусоида) и обратно, мне же нужно всегда выводить только самое максимальное положительное значение амплитуды.
← →
VictorT (2002-04-15 12:27) [5]
> У меня есть мысль, но я в ней не уверен, может чем нибудь
> поможете?
А какя мысль?
← →
MBo (2002-04-15 13:01) [6]Abs
← →
Sergo (2002-04-15 13:50) [7]>VictorT ©
Мысль такая: загонять в массив и брать максимальное (но я в этом пока не уверен)
>MBo
Abs просто из отрицательных сделает положительные, а выводится все равно будет изменение амплитуды во времени (например 20,15,10,5,0,5,10,15,20: т.е будет выводится значение уровня сигнала в момент выборки), а мне нужно только амплитудное значение например идет в данный момент сигнал с амплитудой 20db, а через час сменится на 19 вот только и изменение амплитуды мне и нужно выводить. Уф...объяснил как мог, езвиняйте ежели что.
← →
MBo (2002-04-15 13:53) [8]не все понял. делаешь переменную MaxAmp, относительно нее считаешь, при превышении обновляешь ее
← →
Sergo (2002-04-15 13:59) [9]>MBo ©
Ты имеешь в Waveform?
А если амплитуда наоборот уменьшится MaxAmp отследит это?
← →
VictorT (2002-04-15 13:59) [10]Я предлагаю так: во-первых, как сказал MBo, приводишь значение сигнала к абсолютному значению, во-вторых, при каждой выборке значения сигнала запоминаешь предыдущее значение, в-третьих, сравниваешь предыдущее значение сигнала с текущим, и если оно больше, то выводишь его в Label. Если непонятно, то напишу в виде программы.
← →
Sergo (2002-04-15 14:02) [11]>VictorT ©
В принципе понятно, но если не трудно напиши пожалуйста.
← →
VictorT (2002-04-15 14:11) [12]int value;
int value1 = 0;
while(условие продолжения цикла) {
value = abs(GetSignal());
if (value1 > value)
Label1->Caption = FloatToStr(value1);
value1 = value;
}
З.Ы. Извиняюсь, что Си, но думаю ты поймёшь.
← →
Sergo (2002-04-15 14:53) [13]Спасибо!!!
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c