Hi, All!
Подскажите, пожалуйста, алгоритм _некогерентного_ приема частотно-манипулированного (двух частотного) сигнала. Частоты - звуковые.
С уважением, Сергей Ефанов.
Hi, All!
Подскажите, пожалуйста, алгоритм _некогерентного_ приема частотно-манипулированного (двух частотного) сигнала. Частоты - звуковые.
С уважением, Сергей Ефанов.
Mon Jan 02 2006 16:59, Sergey Efanov wrote to All:
SE> ðÏÄÓËÁÖÉÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÁÌÇÏÒÉÔÍ _ÎÅËÏÇÅÒÅÎÔÎÏÇÏ_ ÐÒÉÅÍÁ SE> ÞÁÓÔÏÔÎÏ-ÍÁÎÉÐÕÌÉÒÏ×ÁÎÎÏÇÏ (Ä×ÕÈ ÞÁÓÔÏÔÎÏÇÏ) ÓÉÇÎÁÌÁ. SE> þÁÓÔÏÔÙ - Ú×ÕËÏ×ÙÅ.
áÌÇÏÒÉÔÍ ÉÍÅÎÉ áïHÁ.VLV
"ñ ÄÏÂÒÙÊ, É ÜÔÏ ÅÄÉÎÓÔ×ÅÎÎÙÊ ÍÏÊ ÎÅÄÏÓÔÁÔÏË" (äÏÓÔÏÅ×ÓËÉÊ)
"Vladimir Vassilevsky" snipped-for-privacy@fullnet.net сообщил/сообщила в новостях следующее: news: snipped-for-privacy@p2.f.n5020.z2.ftn...
Хочется чего нибудь другого :) Так, что бы не куски сигнала анализировать, а непрерывно обрабатывать поступающие данные.
С уважением, Сергей Ефанов.
Hello Sergey!
02 Jan 06 17:59, you wrote to All:SE> ðÏÄÓËÁÖÉÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÁÌÇÏÒÉÔÍ _ÎÅËÏÇÅÒÅÎÔÎÏÇÏ_ ÐÒÉÅÍÁ SE> ÞÁÓÔÏÔÎÏ-ÍÁÎÉÐÕÌÉÒÏ×ÁÎÎÏÇÏ (Ä×ÕÈ ÞÁÓÔÏÔÎÏÇÏ) ÓÉÇÎÁÌÁ. SE> þÁÓÔÏÔÙ - Ú×ÕËÏ×ÙÅ.
íÁÓÓÁ. ÷ÁÒÉÁÎÔ 1. ïÃÉÆÒÏ×Ù×ÁÅÛØ ÓÉÇÎÁÌ, ÐÅÒÅÍÎÏÖÁÅÛØ ÎÁ ÓÉÎÕÓÎÕÀ É ËÏÓÉÎÕÓÎÕÀ ËÏÍÐÏÎÅÎÔÕ ËÁÖÄÏÊ ÞÁÓÔÏÔÙ, ÎÁËÁÐÌÉ×ÁÅÛØ ÐÏÌÂÉÔÁ, ÂÅÒÅÛØ ÍÏÄÕÌÉ, ÐÏ ÒÁÚÎÉÃÅ ÄÅÌÁÅÛØ ×Ù×ÏÄ Ï ÚÎÁËÅ ÏÔËÌÏÎÅÎÉÑ. ÷ÁÒÉÁÎÔ 2. ïÃÉÆÒÏ×Ù×ÁÅÛØ ÓÉÇÎÁÌ, ÐÅÒÅÍÎÏÖÁÅÛØ ÎÁ ÓÉÎÕÓ É ËÏÓÉÎÕÓ ÓÒÅÄÎÅÊ ÞÁÓÔÏÔÙ, ÕÓÒÅÄÎÑÅÛØ ÓËÏÌØÚÑÝÉÍ ÓÒÅÄÎÉÍ ÎÁ ÐÏÓÌÅÄÎÉÈ ÐÏÌÂÉÔÁ, ÂÅÒÅÛØ ÁÒËÔÁÎÇÅÎÓ, ÓÍÏÔÒÉÛØ, × ËÁËÕÀ ÓÔÏÒÏÎÕ ×ÒÁÝÁÅÔÓÑ ÁÒËÔÁÎÇÅÎÓ. ÷ÁÒÉÁÎÔ 3. ôÕÐÏ ÉÚÍÅÒÑÅÛØ ÐÅÒÉÏÄ ÓÉÇÎÁÌÁ.Anatoly
Hello, Sergey! You wrote to Vladimir Vassilevsky on Tue, 3 Jan 2006 01:58:23 +0000 (UTC):
SE>>> ðÏÄÓËÁÖÉÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÁÌÇÏÒÉÔÍ _ÎÅËÏÇÅÒÅÎÔÎÏÇÏ_ ÐÒÉÅÍÁ SE>>> ÞÁÓÔÏÔÎÏ-ÍÁÎÉÐÕÌÉÒÏ×ÁÎÎÏÇÏ (Ä×ÕÈ ÞÁÓÔÏÔÎÏÇÏ) ÓÉÇÎÁÌÁ. SE>>> þÁÓÔÏÔÙ - Ú×ÕËÏ×ÙÅ. ??>>
??>> áÌÇÏÒÉÔÍ ÉÍÅÎÉ áïHÁ.
SE> èÏÞÅÔÓÑ ÞÅÇÏ ÎÉÂÕÄØ ÄÒÕÇÏÇÏ :) ôÁË, ÞÔÏ ÂÙ ÎÅ ËÕÓËÉ ÓÉÇÎÁÌÁ SE> ÁÎÁÌÉÚÉÒÏ×ÁÔØ, Á ÎÅÐÒÅÒÙ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ ÐÏÓÔÕÐÁÀÝÉÅ ÄÁÎÎÙÅ.
ëÏÇÄÁ-ÔÏ × su.hardw.schemes ÔÁËÉÅ ÁÌÇÏÒÉÔÍÙ ÐÒÏÂÅÇÁÌÉ.Tue Jan 03 2006 03:58, Sergey Efanov wrote to Vladimir Vassilevsky:
SE> èÏÞÅÔÓÑ ÞÅÇÏ ÎÉÂÕÄØ ÄÒÕÇÏÇÏ :) ôÁË, ÞÔÏ ÂÙ ÎÅ ËÕÓËÉ ÓÉÇÎÁÌÁ SE> ÁÎÁÌÉÚÉÒÏ×ÁÔØ, Á ÎÅÐÒÅÒÙ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ ÐÏÓÔÕÐÁÀÝÉÅ ÄÁÎÎÙÅ.
ëÁËÉÅ ÐÒÏÂÌÅÍÙ? ïÂÒÁÂÁÔÙ×ÁÊ ÎÅÐÒÅÒÙ×ÎÏ.VLV
"ñ ÄÏÂÒÙÊ, É ÜÔÏ ÅÄÉÎÓÔ×ÅÎÎÙÊ ÍÏÊ ÎÅÄÏÓÔÁÔÏË" (äÏÓÔÏÅ×ÓËÉÊ)
Hello Sergey.
Mon Jan 02 2006 17:59, Sergey Efanov wrote to All:
SE> ðÏÄÓËÁÖÉÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÁÌÇÏÒÉÔÍ _ÎÅËÏÇÅÒÅÎÔÎÏÇÏ_ ÐÒÉÅÍÁ SE> ÞÁÓÔÏÔÎÏ-ÍÁÎÉÐÕÌÉÒÏ×ÁÎÎÏÇÏ (Ä×ÕÈ ÞÁÓÔÏÔÎÏÇÏ) ÓÉÇÎÁÌÁ. SE> þÁÓÔÏÔÙ - Ú×ÕËÏ×ÙÅ.
ñ ÐÏÌØÚÏ×ÁÌÓÑ ÁÌÇÏÒÉÔÍÏÍ çÅÒÃÅÌÑ, ÍÎÅ ÐÏÎÒÁ×ÉÌÏÓØ. :) þÉÓÌÏ ÓÜÍÐÌÏ× - ÌÀÂÏÅ, ÐÒÏÓÔÏ ÞÅÍ ÂÏÌØÛÅ - ÔÅÍ ×ÙÛÅ ÔÏÞÎÏÓÔØ. þÉÓÌÏ ÁÎÁÌÉÚÉÒÕÅÍÙÈ ÞÁÓÔÏÔ ÔÏÖÅ ÌÀÂÏÅ.HÁÐÒÉÍÅÒ, ÄÌÑ DTMF (ÎÅÏÐÔÉÍÉÚÉÒÏ×ÁÎÎÙÊ, ÎÏ ÂÏÌÅÅ ÐÏÎÑÔÎÙÊ ×ÁÒÉÁÎÔ):
unit Goertzel;
interface uses AuxTypes;
type tIdx = 1..8; tILo = 1..4; tIHi = 5..8;
procedure InitGoertzel (idx : tIdx; iFreq, Sampling_Rate : longint); procedure ResetOne (idx : tIdx ); procedure ResetAll; procedure ProcessSample (idx : tIdx; sample : word); procedure GetRealImag (idx : tIdx; var realPart: float; var imagPart: float); function GetMagnitude (idx : tIdx) : float;
implementation
uses SysUtils, Math, Auxil, MMInput;
type
tOneF = record coeff, Q1, Q2, sine, cosine : float; end;
var acc : array [tIdx] of tOneF;
// Call this routine before every "block" of samples.
procedure ResetOne ( idx : tIdx ); begin with acc[idx] do begin Q2 := 0; Q1 := 0; end; end;
// Reset all "accumulators"
procedure ResetAll; var i : tIdx; begin for i := low(tIdx) to high(tIdx) do ResetOne(i); end;
// Call this once for every iFreq, to precompute the constants.
procedure InitGoertzel (idx : tIdx; iFreq, Sampling_Rate : longint); var omega: float; begin
with acc[idx] do begin
omega := 2.0 * Pi * iFreq / Sampling_Rate; sine := sin(omega); cosine := cos(omega); coeff := 2.0 * cosine;
end;
ResetOne(idx);
end;
// Call this routine for every sample.
procedure ProcessSample(idx : tIdx; sample : word); var Q0 : float; begin with acc[idx] do begin Q0 := Q1*coeff - Q2 + sample; Q2 := Q1; Q1 := Q0; end; end;
// Call this routine after every block to get the complex result.
procedure GetRealImag (idx : tIdx; var realPart: float; var imagPart: float); begin with acc[idx] do begin realPart := (Q1 - Q2 * cosine); imagPart := (Q2 * sine); end; end;
// Call this after every block to get the magnitude in something like decibels
function GetMagnitude (idx : tIdx) : float; begin with acc[idx] do result := 10 * log10 (sqrt ( sqr(Q1) + sqr(Q2) - Q1*Q2*coeff)); end;
end.
"Sergey Mudry" snipped-for-privacy@nsk.ru сообщил/сообщила в новостях следующее: news: snipped-for-privacy@linux-server.nicit.com.ua...
Спасибо, Сергей, и большое спасибо Алексею Владимирову!
С уважением, Сергей Ефанов.
"Vladimir Vassilevsky" snipped-for-privacy@fullnet.net сообщил/сообщила в новостях следующее: news: snipped-for-privacy@p2.f.n5020.z2.ftn...
Договорились! :)
С уважением, Сергей Ефанов.
"Anatoly Mashanov" snipped-for-privacy@f282.n.z2.fidonet.org> сообщил/сообщила в новостях следующее: news: snipped-for-privacy@f282.n.z2.ftn...
А как посмотреть, в какую сторону вращается? И почему полбита, а не целый бит?
Суважением, Сергей Ефанов.
"Dimmy Timchenko" snipped-for-privacy@f15.n.z2.fidonet.org> сообщил/сообщила в новостях следующее: news: snipped-for-privacy@f15.n.z2.ftn...
Спасибо, пригодится!
С уважением, Сергей Ефанов.
Hello Sergey.
Wed Jan 04 2006 20:11, Sergey Efanov wrote to me:
SE> óÐÁÓÉÂÏ, ÐÒÉÇÏÄÉÔÓÑ!
çÌÁ×ÎÏÅ - ÐÒÏÓÔÏ É ÐÏÎÑÔÎÏ, ÎÉËÁËÉÈ ÐÏÌÕÂÉÔÏ× É ×ÒÁÝÁÀÝÉÈÓÑ ÁÒËÔÁÎÇÅÎÓÏ×. ;)Dimmy.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required