Sunday 16 July 2017

Gr Moving_average Ff


Gnuradio. gr: Filtros gnuradio. gr. Fftfilterccc (int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps. Int nthreads 1) rarr grfftfiltercccsptr Filtro Fast FFT com entrada grcomplex, saída grcomplex e torneiras grcomplex. Grfftfiltercccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) grfftfiltercccsptr. Taps (self) rarr std :: vectorlt (grcomplex, std :: allocatorlt (grcomplex) gt) gt gnuradio. gr. Fftfilterfff (int dizimação. Torneiras do flutuador. Int nthreads 1) rarr grfftfilterfffsptr Filtro Fast FFT com entrada flutuante, saída flutuante e torneiras flutuantes. Bloco de combinação de atraso de filtragem. O bloco leva um ou dois fluxos flutuantes e produz um fluxo complexo. Se apenas um fluxo flutuante for inserido, a saída real é uma versão atrasada dessa entrada e a saída imaginária é a saída filtrada. Se dois flutuadores estiverem conectados à entrada, então a saída real é a versão atrasada da primeira entrada e a saída imaginária é a saída filtrada. O atraso no caminho real explica o atraso do grupo introduzido pelo filtro no caminho imaginário. As torneiras do filtro precisam ser calculadas antes de inicializar este bloco. Gnuradio. gr. Firfilterccc (int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grfirfiltercccsptr FIR filtro com entrada grcomplex, saída grcomplex e torneiras grcomplex. Grfirfiltercccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) grfirfiltercccsptr. Taps (self) rarr std :: vectorlt (grcomplex, std :: allocatorlt (grcomplex) gt) gt gnuradio. gr. Firfilterccf (int decimation. Torneiras do flutuador) rarr grfirfilterccfsptr Filtro FIR com entrada grcomplex, saída grcomplex e torneiras flutuantes. Grfirfilterccfsptr. Settaps (torneiras de flutuador próprio) grfirfilterccfsptr. Taps (self) rarr floatvector gnuradio. gr. Firfilterfcc (int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grfirfilterfccsptr Filtro FIR com entrada flutuante, saída grcomplex e torneiras grcomplex. Grfirfilterfccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) grfirfilterfccsptr. Taps (self) rarr std :: vectorlt (grcomplex, std :: allocatorlt (grcomplex) gt) gt gnuradio. gr. Firfilterfff (tentação interna, torneiras de flutuador) rarr grfirfilterfffsptr Filtro FIR com entrada flutuante, saída flutuante e torneiras flutuantes. Filtro FIR com entrada flutuante, saída curta e torneiras flutuantes. Grfirfilterfsfsptr. Settaps (torneiras de flutuador próprio) grfirfilterfsfsptr. Taps (self) rarr floatvector gnuradio. gr. Firfilterscc (int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grfirfiltersccsptr Filtro FIR com entrada curta, saída grcomplex e torneiras grcomplex. Grfirfiltersccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) grfirfiltersccsptr. Taps (self) rarr std :: vectorlt (grcomplex, std :: allocatorlt (grcomplex) gt) gt gnuradio. gr. Fractionalinterpolatorcc (flutuante phaseshift. Float interpratio) rarr grfractionalinterpolatorccsptr Interpolando o filtro mmse com entrada grcomplex, saída grcomplex. Grfractionalinterpolatorccsptr. Interpratio (self) rarr float grfractionalinterpolatorccsptr. Mu (self) rarr float grfractionalinterpolatorccsptr. Setinterpratio (self-float interpratio) grfractionalinterpolatorccsptr. Setmu (self. Float mu) gnuradio. gr. Interpolação fraccional (fase flutuante, interpolação flutuante) rarr grfractionalinterpolatorffsptr Filtro mmse interpolado com entrada flutuante, saída flutuante. Grfractionalinterpolatorffsptr. Interpratio (self) rarr float grfractionalinterpolatorffsptr. Mu (self) rarr float grfractionalinterpolatorffsptr. Setinterpratio (self-float interpratio) grfractionalinterpolatorffsptr. Setmu (self. Float mu) gnuradio. gr. Freqxlatingfirfilterccc (int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt torneiras. Doublefreck. Double samplingfreq) rarr grfreqxlatingfirfiltercccsptr FIR filtro combinado com tradução de freqüência com entrada grcomplex, saída grcomplex e torneiras grcomplex Esta classe de forma eficiente Combina uma tradução de frequência (tipicamente 8220down conversion8221) com um filtro FIR (tipicamente passe baixo) e decimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de faixa estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. Entradas adicionais ou saídas são ignoradas. Construa um filtro FIR com as torneiras fornecidas e uma tradução de freqüência composta que mude o centrofreq para baixo para zero Hz. A tradução de freqüência vem logicamente antes da operação de filtragem. Grfreqxlatingfirfiltercccsptr. Setcenterfreq (self. Double centerfreq) grfreqxlatingfirfiltercccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Freqxlatingfirfilterccf (int dizimação. Torneiras de flutuador. Ferfiltrocfcfcfpfpfpftrf) O filtro FIR combinado com conversão de freqüência com entrada grcomplex, saída grcomplex e torneiras flutuantes Esta classe combina eficientemente uma tradução de freqüência (normalmente conversão 8220down8221) com um filtro FIR (tipicamente baixo - pass) e decimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de faixa estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. Entradas adicionais ou saídas são ignoradas. Construa um filtro FIR com as torneiras fornecidas e uma tradução de freqüência composta que mude o centrofreq para baixo para zero Hz. A tradução de freqüência vem logicamente antes da operação de filtragem. Grfreqxlatingfirfilterccfsptr. Setcenterfreq (self. Double centerfreq) grfreqxlatingfirfilterccfsptr. Settaps (torneiras de flutuador) gnuradio. gr. Freqxlatingfirfilterfcc (int dizimação. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt torneiras. Doublefreck. Double samplingfreq) rarr grfreqxlatingfirfilterfccsptr FIR filtro combinado com conversão de freqüência com entrada flutuante, saída grcomplex e torneiras grcomplex Esta classe de forma eficiente Combina uma tradução de frequência (tipicamente 8220down conversion8221) com um filtro FIR (tipicamente passe baixo) e decimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de faixa estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. Entradas adicionais ou saídas são ignoradas. Construa um filtro FIR com as torneiras fornecidas e uma tradução de freqüência composta que mude o centrofreq para baixo para zero Hz. A tradução de freqüência vem logicamente antes da operação de filtragem. Grfreqxlatingfirfilterfccsptr. Setcenterfreq (self. Double centerfreq) grfreqxlatingfirfilterfccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Freqxlatingfirfilterfcf (int dizimação, flutuador, torneiras, duplo fatorfreckffrefilterfcfsptr) Filtro FIR combinado com tradução de freqüência com entrada flutuante, saída grcomplex e torneiras flutuantes Esta classe combina eficientemente uma conversão de freqüência (tipicamente conversão 8220down8221) com um filtro FIR (tipicamente baixo - pass) e decimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de faixa estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. Entradas adicionais ou saídas são ignoradas. Construa um filtro FIR com as torneiras fornecidas e uma tradução de freqüência composta que mude o centrofreq para baixo para zero Hz. A tradução de freqüência vem logicamente antes da operação de filtragem. Grfreqxlatingfirfilterfcfsptr. Setcenterfreq (self. Double centerfreq) grfreqxlatingfirfilterfcfsptr. Settaps (torneiras de flutuador) gnuradio. gr. Freqxlatingfirfilterscc (int dizimação. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt torções. Doublefrefowfreck. Double samplingfreq) rarr grfreqxlatingfirfiltersccsptr filtro FIR combinado com tradução de freqüência com entrada curta, saída grcomplex e torneiras grcomplex Esta classe de forma eficiente Combina uma tradução de frequência (tipicamente 8220down conversion8221) com um filtro FIR (tipicamente passe baixo) e decimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de faixa estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. Entradas adicionais ou saídas são ignoradas. Construa um filtro FIR com as torneiras fornecidas e uma tradução de freqüência composta que mude o centrofreq para baixo para zero Hz. A tradução de freqüência vem logicamente antes da operação de filtragem. Grfreqxlatingfirfiltersccsptr. Setcenterfreq (self. Double centerfreq) grfreqxlatingfirfiltersccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Freqxlatingfirfilterscf (int dizimação. Torneiras de flutuador, duplo fator de descarga centralfreq) rarr grfreqxlatingfirfilterscfsptr Filtro FIR combinado com conversão de freqüência com entrada curta, saída grcomplex e torneiras flutuantes Esta classe combina eficientemente uma tradução de freqüência (tipicamente conversão 8220down8221) com um filtro FIR (tipicamente baixo - pass) e decimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de faixa estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. Entradas adicionais ou saídas são ignoradas. Construa um filtro FIR com as torneiras fornecidas e uma tradução de freqüência composta que mude o centrofreq para baixo para zero Hz. A tradução de freqüência vem logicamente antes da operação de filtragem. Grfreqxlatingfirfilterscfsptr. Setcenterfreq (self. Double centerfreq) grfreqxlatingfirfilterscfsptr. Settaps (torneiras de flutuador) gnuradio. gr. Hilbertfc (unsigned int ntaps) rarr grhilbertfcsptr saída real é entrada devidamente atrasada. A saída imaginária é filtrada por hilbert (versão de fase de 90 graus) da entrada. Gnuradio. gr. Filtro IIR com entrada flutuante, saída flutuante e torneiras duplas Este filtro usa a implementação Direct Form I, onde contém as torneiras feed-forward e as respostas. A entrada e a saída satisfazem uma equação de diferença da forma yn-sum ak yn-k soma bk xn-k com a função do sistema racional correspondente Observe que alguns textos definem a função do sistema com a no denominador. Se você estiver usando essa convenção, you8217ll precisa negar as batidas de feedback. Griirfilterffdsptr. Settaps (autovectorial fftaps. Doublevector fbtaps) gnuradio. gr. Interpfirfilterccc (int interpolação. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grinterpfirfiltercccsptr Interpolando o filtro FIR com entrada grcomplex, saída grcomplex e torneiras grcomplex. Grinterpfirfiltercccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Interpfirfilterccf (int interpolação. Torneiras do flutuador) rarr grinterpfirfilterccfsptr Interpolação do filtro FIR com entrada grcomplex, saída grcomplex e torneiras flutuantes. Grinterpfirfilterccfsptr. Settaps (torneiras de flutuador) gnuradio. gr. Interpfirfilterfcc (int interpolação. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grinterpfirfilterfccsptr Interpolando o filtro FIR com entrada flutuante, saída grcomplex e torneiras grcomplex. Grinterpfirfilterfccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Interpfirfilterfff (interpolação int. Torneiras de flutuador) rarr grinterpfirfilterfffsptr Interpolação do filtro FIR com entrada flutuante, saída flutuante e torneiras flutuantes. Grinterpfirfilterfffsptr. Settaps (torneiras de flutuador) gnuradio. gr. Interpfirfilterfsf (int interpolação. Torneiras do flutuador) rarr grinterpfirfilterfsfsptr Interpolando o filtro FIR com entrada de flutuador, saída curta e torneiras de flutuação. Grinterpfirfilterfsfsptr. Settaps (torneiras de flutuador) gnuradio. gr. Interpfirfilterscc (int interpolação. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grinterpfirfiltersccsptr Interpolando o filtro FIR com entrada curta, saída grcomplex e torneiras grcomplex. Grinterpfirfiltersccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Rational Resampling Filtro FIR Polyphase com entrada grcomplex, saída grcomplex e torneiras grcomplex (int interpolation. Int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grrationalresamplerbasecccsptr Rational Resampling Filtro polyphase FIR com entrada grcomplex, saída grcomplex e torneiras grcomplex. Grrationalresamplerbasecccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Rationalresamplerbaseccf (int interpolação. Int decimation. Torneiras flutuantes) rarr grrationalresamplerbaseccfsptr Rational Resampling Filtro FIR Polyphase com entrada grcomplex, saída grcomplex e torneiras flutuantes. Grrationalresamplerbaseccfsptr. Settaps (torneiras de flutuador) gnuradio. gr. Rationalresamplerbasefcc (int interpolação. Int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grrationalresamplerbasefccsptr Rational Resampling Filtro polyphase FIR com entrada flutuante, saída grcomplex e torneiras grcomplex. Grrationalresamplerbasefccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Rationalresamplerbasefff (int interpolação. Int decimation. Torneiras flutuantes) rarr grrationalresamplerbasefffsptr Rational Resampling Filtro FIR Polyphase com entrada flutuante, saída flutuante e torneiras flutuantes. Grumpalresamplerbasefffsptr. Settaps (torneiras de flutuador) gnuradio. gr. Rationalresamplerbasefsf (int interpolação. Int decimation. Flutuador de torções) rarr grrationalresamplerbasefsfsptr Rational Resampling Polyphase FIR filtro com entrada de flutuador, saída curta e flutuador de torneiras. Grrationalresamplerbasefsfsptr. Settaps (torneiras de flutuador) gnuradio. gr. Rationalresamplerbasescc (int interpolação. Int decimation. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) rarr grrationalresamplerbasesccsptr Rational Resampling Polyphase FIR filtro com entrada curta, saída grcomplex e torneiras grcomplex. Grumpalbase de amostras de amostrasccsptr. Settaps (self. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Singlepoleiirfiltercc (double alpha. Unsigned int vlen 1) rarr grsinglepoleiirfilterccsptr filtro de um pólo IIR com entrada complexa, saída complexa A entrada e saída satisfazem uma equação de diferença da forma yn - (1-alfa) yn-1 alfa xn com o sistema racional correspondente Função Note que alguns textos definem a função do sistema com a no denominador. Se você estiver usando essa convenção, you8217ll precisa negar a resposta toque. Grsinglepoleiirfilterccsptr. Settaps (self. Double alpha) gnuradio. gr. Singlepoleiirfilterff (double alpha, unsigned int vlen 1) rarr grsinglepoleiirfilterffsptr filtro de um único pólo IIR com entrada flutuante, saída flutuante A entrada e saída satisfazem uma equação de diferença da forma yn - (1-alfa) yn-1 alfa xn com o sistema racional correspondente Função Note que alguns textos definem a função do sistema com a no denominador. Se você estiver usando essa convenção, you8217ll precisa negar a resposta toque. Grsinglepoleiirfilterffsptr. Settaps (self. Double alpha) gnuradio. gr. Moveaveragecc (int length. grcomplex scale. Int maxiter 4096) rarr grmovingaverageccsptr output é a soma móvel das últimas N amostras, escaladas pelo fator de escala maxiter limites quanto tempo nós vamos sem descarga o acumulador Isso é necessário para evitar a instabilidade numérica para flutuador e complexo. Grmovingaverageccsptr. Comprimento (auto) rarr int grmovingaverageccsptr. Escala (auto-) rarr grcomplex grmovingaverageccsptr. Setlengthandscale (tamanho de auto. Int. Escala grcomplex) gnuradio. gr. Mudança de tamanho (comprimento do int. Escala do flutuador) int maxiter 4096) rarr grmovingaverageffsptr saída é a soma móvel das últimas N amostras, escaladas pelo fator de escala limites maxiter quanto tempo vamos sem descarga o acumulador Isso é necessário para evitar a instabilidade numérica para flutuador e complexo. A saída é a soma móvel das últimas N amostras, escaladas pelo fator de escala máximas limites quanto tempo nós vamos sem limpar o acumulador Isso é necessário para evitar instabilidade numérica para flutuador e complexo. A saída é a soma móvel das últimas N amostras, escaladas pelo fator de escala máximas limites quanto tempo nós vamos sem limpar o acumulador Isso é necessário para evitar instabilidade numérica para flutuador e complexo. Grmovingaveragesssptr. Comprimento (auto) rarr int grmovingaveragesssptr. Escala (auto) rarr short grmovingaveragesssptr. Setlengthandscale (auto. Int length. Short scale) gnuradio. gr. Pfbarbresamplerccf (taxa de flutuação, torneiras de flutuador, filtragem int não assinada 32) rarr grpfbarbresamplerccfsptr Resplificador arbitrário de banco de filtros polifásico com entrada grcomplex, saída grcomplex e torneiras flutuantes. Este bloco leva um fluxo de sinal e executa uma reamostragem arbitrária. A taxa de remate pode ser qualquer número real. O reescalonamento é feito construindo filtros onde é a taxa de interpolação. Em seguida, calculamos onde. Usando e. Podemos realizar uma reamostragem racional onde é um número racional perto da taxa de entrada onde temos filtros e nós os atravessamos como um banco de filtros polifásico com um passo de tal forma. Para obter a taxa arbitrária, queremos interpolar entre dois pontos. Para cada valor, tiramos um resultado do filtro atual. E o próximo filtro e depois interpolam linearmente entre os dois com base na taxa de re-amostragem real que queremos. A interpolação linear apenas nos fornece uma aproximação da taxa de amostragem real especificada. O erro é um erro de quantificação entre os dois filtros que usamos como nossos pontos de interpolação. Para este fim, o número de filtros. Usado determina o erro de quantização maior. Menor o ruído. Você pode projetar para um nível de ruído especificado, definindo o tamanho do filtro (parâmetros). O tamanho padrão é 32 filtros, o que é tão bom quanto a maioria das implementações precisam. O truque com o design deste filtro é sobre como especificar as torneiras do protótipo de filtro. Como o interpolador PFB, as torneiras são especificadas usando a taxa de filtro interpolada. Nesse caso, essa taxa é a taxa de amostragem de entrada multiplicada pelo número de filtros no banco de filtros, que também é a taxa de interpolação. Todos os outros valores devem ser relativos a essa taxa. Por exemplo, para um resamplificador arbitrário de 32 filtros e usando o utilitário GNU Radio8217s firdes para construir o filtro, criamos um filtro passa-baixa com uma taxa de amostragem de. Uma largura de banda de 3 dB e uma largura de banda de transição de. Também podemos especificar a atenuação fora de banda para usar. E a função da janela do filtro (uma janela Blackman-harris neste caso). A primeira entrada é o ganho do filtro, que especificamos aqui como a taxa de interpolação (). A teoria por trás desse bloco pode ser encontrada no capítulo 7.5 do seguinte livro. Construa o resamplificador de arbitramento de banco de filtros polifásico. Imprima todas as torneiras do banco de filtros na tela. Grpfbarbresamplerccfsptr. Setrate (self. Float rate) gnuradio. gr. Pfbchannelizerccf (unsigned int numchans. Torneiras de flutuador. Float oversamplerate 1) rarr grpfbchannelizerccfsptr Mecanizador de banco de filtros em polifase com entrada grcomplex, saída grcomplex e torneiras flutuantes. Este bloco possui entradas complexas e canaliza-lo para canais de largura de banda igual. Cada um dos canais resultantes é dizimado à nova taxa que é a taxa de amostragem de entrada dividida pelo número de canais. O código do canalizador PFB leva as torneiras geradas acima e cria um conjunto de filtros. O conjunto contém o número de filtros e cada filtro contém ceil (taps. size () decim) número de torneiras. Cada toque do protótipo do filtro é inserido seqüencialmente no próximo filtro. Quando todas as torneiras de entrada são usadas, os filtros restantes no banco de filtros são preenchidos com 08217s para garantir que cada filtro tenha o mesmo número de torneiras. Cada filtro opera usando as classes de filtro grfir do GNU Radio, que leva o fluxo de entrada e executa o cálculo interno do produto para onde está o número de torneiras de filtro. Para gerenciar eficientemente isso na estrutura de Rádio GNU, cada entrada de filtro deve vir de seu próprio fluxo de entrada. Portanto, o canalizador deve ser fornecido com fluxos onde o fluxo de entrada foi desintercalado. Isso é mais fácil de usar usando o bloco grstreamtostreams. A saída é então produzida como um vetor, onde o índice no vetor é a próxima amostra do canal th. Isso é mais facilmente manuseado enviando a saída para um bloco grvectortostreams para lidar com a conversão e a passagem de fluxos para fora. A formatação de entrada e saída é feita usando um hierblock2 chamado pfbchannelizerccf. Isso pode assumir um único fluxo e gerar fluxos com base no comportamento descrito acima. As torneiras do filtro8217s devem ser baseadas na taxa de amostragem de entrada. Por exemplo, usando o utilitário GNU Radio8217s firdes para a construção de filtros, nós criamos um filtro passa-baixa com uma taxa de amostragem de. Uma largura de banda de 3 dB e uma largura de banda de transição de. Também podemos especificar a atenuação fora de banda para usar. E a função da janela do filtro (uma janela Blackman-harris neste caso). A primeira entrada é o ganho do filtro, que especificamos aqui como unidade. A saída do filtro também pode ser ampliada. A taxa de amostragem excedente é a proporção da taxa de amostragem de saída real para a taxa de amostragem de saída normal. Deve ser racionalmente relacionado ao número de canais como Ni para i em 1, N, o que fornece uma taxa amostral de fsN, fs onde fs é a taxa de amostragem de entrada e N é o número de canais. Por exemplo, para 6 canais com fs 6000 Hz, a taxa normal é 60006 1000 Hz. As taxas de sobreaplicação permitidas são 66, 65, 64, 63, 62 e 61, onde a taxa de amostra de saída de uma relação de oversample 61 é de 6000 Hz, ou 6 vezes a 1000 Hz normal. Uma taxa de 65 1,2, de modo que a taxa de saída seria de 1200 Hz. A teoria por trás desse bloco pode ser encontrada no Capítulo 6 do seguinte livro. Construa o decimador do banco de filtros polifásico. Por exemplo, para 6 canais com fs 6000 Hz, a taxa normal é 60006 1000 Hz. As taxas de sobreaplicação permitidas são 66, 65, 64, 63, 62 e 61, onde a taxa de amostra de saída de uma relação de oversample 61 é de 6000 Hz, ou 6 vezes a 1000 Hz normal. Restaura as torneiras de filtro filterbank8217s com o novo protótipo de filtro gnuradio. gr. Pfbclocksyncccf (sps duplo. Flutuador loopbw. Torneiras de flutuador. Filtros de filtros não assinados 32. float initphase 0. float maxratedeviation 1.5. Int osps 1) rarr grpfbclocksyncccfsptr Sincronizador de tempo usando bancos de filtros polifásicos. Este bloco executa sincronização de tempo para sinais PAM, minimizando a derivada do sinal filtrado, que por sua vez maximiza o SNR e minimiza o ISI. Esta abordagem funciona configurando dois bancos de filtros. Um banco de filtros contém o filtro correspondente de moldagem de impulsos do sinal8217s (como um filtro de coseno subido por raiz), onde cada ramo do banco de filtros contém uma fase diferente do filtro. O segundo banco de filtros contém os derivados dos filtros no primeiro banco de filtros. Pensando nisso no domínio do tempo, o primeiro banco de filtros contém filtros que têm uma forma sinc. Queremos alinhar o sinal de saída a ser amostrado exatamente no pico da forma sinc. A derivada do sinc contém um zero no ponto máximo do sinc (sinc (0) 1, sinc (0) 8217 0). Além disso, a região ao redor do ponto zero é relativamente linear. Utilizamos esse fato para gerar o sinal de erro. Se o sinal dos filtros derivados for din para o i-ésimo filtro, e a saída do filtro correspondente é xin, calculamos o erro como: en (Re Re Im Im) 2.0 Esta equação projeta o erro nas partes real e imaginária . Há duas razões pelas quais nós multiplicamos pelo próprio sinal. Primeiro, se o símbolo puder ser positivo ou negativo, mas queremos que o termo de erro sempre nos diga para ir na mesma direção dependendo do lado do ponto zero em que estamos. O sinal de xin ajusta o termo de erro para fazer isso. Em segundo lugar, a magnitude de xin escala o termo de erro dependendo da amplitude do simbolo 8217, então os sinais maiores nos dão um termo de erro mais forte porque temos mais confiança nesse valor do símbolo8217s. Usar a magnitude de xin em vez de apenas o sinal é especialmente bom para sinais com baixo SNR. O sinal de erro, en, nos dá um valor proporcional ao quão longe do ponto zero, estamos no sinal derivado. Queremos direcionar esse valor para zero, então configuramos um loop de segunda ordem. Temos duas variáveis ​​para este loop. Dk é o número do filtro no banco de filtros em que estamos e drate é a taxa que passamos através dos filtros no estado estacionário. Ou seja, devido às diferenças naturais do relógio entre o transmissor e o receptor, drate representa essa diferença e atravessaria os caminhos da fase do filtro para manter o receptor bloqueado. Pensando nisso como PLL de segunda ordem, o drate é a freqüência e dk é a fase. Então, atualizamos drate e dk usando as equações de loop padrão com base em dois sinais de erro, dalpha e dbeta. Nós temos esses dois valores definidos um com o outro para um sistema amortecido criticamente, então no construtor de blocos, apenas pedimos 8220gain, 8221 que é dalpha enquanto dbeta é igual a (gain2) 4. Os parâmetros do bloco8217s são: Construa o sincronizador de sincronização de filtro de filtro polifásico. Retorna o gancho de loop alfa. Retorna o beta do loop gain. Grpfbclocksyncccfsptr. Getchanneltaps (self. Int channel) rarr floatvector Retorna as torneiras do filtro correspondente para um canal específico Retorna a taxa de clock atual. Grpfbclocksyncccfsptr. Getdampingfactor (self) rarr float Retorna o fator de amortecimento do loop. Grpfbclocksyncccfsptr. Getdiffchanneltaps (self. Int channel) rarr floatvector Retorna as torneiras no filtro derivado para um canal particular grpfbclocksyncccfsptr. Getdifftaps (self) rarr dummy5 Retorna todas as torneiras do filtro derivado grpfbclocksyncccfsptr. Getdifftapsasstring (self) rarr string Retorna as torneiras do filtro derivado como uma string formatada para imprimir grpfbclocksyncccfsptr. Getloopbandwidth (self) rarr float Retorna a largura de banda do loop. Retorna todas as torneiras do filtro correspondente grpfbclocksyncccfsptr. Gettapsasstring (self) rarr string Retorna as torneiras como uma string formatada para impressão. Configure o gancho de loop alfa. Set8217s o parâmetro de ganho alpha filter8217s do loop. Esse valor realmente só deve ser configurado ajustando a largura de banda e o fator de amortecimento do loop. Defina o beta do loop gain. Set8217s o parâmetro de ganho Beta do filtro loop8217s. Esse valor realmente só deve ser configurado ajustando a largura de banda e o fator de amortecimento do loop. Defina o fator de amortecimento do loop. Defina o fator de amortecimento do loop filter8217s para. O fator de amortecimento deve ser sqrt (2) 2.0 para sistemas criticamente amortecidos. Ajuste-o para mais nada se você souber o que está fazendo. Deve ser um número entre 0 e 1. Quando um novo fator de amortecimento é definido, os ganhos, alfa e beta, do loop são recalculados por uma chamada para updategains (). Defina a largura de banda do loop. Defina a largura de banda do loop filter8217s para. Isso deve estar entre 2pi200 e 2pi100 (no radssamp). Também deve ser um número positivo. Quando um novo fator de amortecimento é definido, os ganhos, alfa e beta, do loop são recalculados por uma chamada para updategains (). Defina o desvio máximo de 0 drate pode ter grpfbclocksyncccfsptr. Settaps (torneiras de flutuador de auto. Dummy5 ourtaps. Std :: vectorlt (p. grfirccf. Std :: allocatorlt (p. grfirccf) gt) gt ourfilter) Restaura as torneiras de filtro filterbank8217s com o novo protótipo de filtro gnuradio. gr. Pfbclocksyncfff (sps duplo. Ganho de flutuação. Torneiras de flutuador. Filtros de filtros não assinados 32. float initphase 0. float maxratedeviation 1.5) rarr grpfbclocksyncfffsptr Sincronizador de tempo usando bancos de filtros de polifase. Este bloco executa sincronização de tempo para sinais PAM, minimizando a derivada do sinal filtrado, que por sua vez maximiza o SNR e minimiza o ISI. Esta abordagem funciona configurando dois bancos de filtros. Um banco de filtros contém o filtro correspondente de moldagem de impulsos do sinal8217s (como um filtro de coseno subido por raiz), onde cada ramo do banco de filtros contém uma fase diferente do filtro. O segundo banco de filtros contém os derivados dos filtros no primeiro banco de filtros. Pensando nisso no domínio do tempo, o primeiro banco de filtros contém filtros que têm uma forma sinc. Queremos alinhar o sinal de saída a ser amostrado exatamente no pico da forma sinc. A derivada do sinc contém um zero no ponto máximo do sinc (sinc (0) 1, sinc (0) 8217 0). Além disso, a região ao redor do ponto zero é relativamente linear. Utilizamos esse fato para gerar o sinal de erro. Se o sinal dos filtros derivados for din para o i-ésimo filtro, e a saída do filtro correspondente é xin, calculamos o erro como: en (Re Re Im Im) 2.0 Esta equação projeta o erro nas partes real e imaginária . Há duas razões pelas quais nós multiplicamos pelo próprio sinal. Primeiro, se o símbolo puder ser positivo ou negativo, mas queremos que o termo de erro sempre nos diga para ir na mesma direção dependendo do lado do ponto zero em que estamos. O sinal de xin ajusta o termo de erro para fazer isso. Em segundo lugar, a magnitude de xin escala o termo de erro dependendo da amplitude do simbolo 8217, então os sinais maiores nos dão um termo de erro mais forte porque temos mais confiança nesse valor do símbolo8217s. Usar a magnitude de xin em vez de apenas o sinal é especialmente bom para sinais com baixo SNR. O sinal de erro, en, nos dá um valor proporcional ao quão longe do ponto zero, estamos no sinal derivado. Queremos direcionar esse valor para zero, então configuramos um loop de segunda ordem. Temos duas variáveis ​​para este loop. Dk é o número do filtro no banco de filtros em que estamos e drate é a taxa que passamos através dos filtros no estado estacionário. Ou seja, devido às diferenças naturais do relógio entre o transmissor e o receptor, drate representa essa diferença e atravessaria os caminhos da fase do filtro para manter o receptor bloqueado. Pensando nisso como um PLL de segunda ordem, o drate é a freqüência e dk é a fase. Então, atualizamos drate e dk usando as equações de loop padrão com base em dois sinais de erro, dalpha e dbeta. Nós temos esses dois valores definidos um com o outro para um sistema amortecido criticamente, então no construtor de blocos, apenas pedimos 8220gain, 8221 que é dalpha enquanto dbeta é igual a (gain2) 4. Os parâmetros do bloco8217s são: Construa o sincronizador de sincronismo de filtro de polifase. Grpfbclocksyncfffsptr. channeltaps ( self . int channel ) rarr floatvector Returns the taps of the matched filter grpfbclocksyncfffsptr. diffchanneltaps ( self . int channel ) rarr floatvector Returns the taps in the derivative filter Print all of the filterbank taps of the derivative filter to screen. Print all of the filterbank taps to screen. Set the gain value alpha for the control loop Set the gain value beta for the control loop Set the maximum deviation from 0 drate can have grpfbclocksyncfffsptr. settaps ( self . floatvector taps . dummy5 ourtaps . std::vectorlt(p. grfirfff . std::allocatorlt(p. grfirfff)gt)gt ourfilter ) Resets the filterbank8217s filter taps with the new prototype filter gnuradio. gr. pfbdecimatorccf ( unsigned int decim . floatvector taps . unsigned int channel ) rarr grpfbdecimatorccfsptr Polyphase filterbank bandpass decimator with grcomplex input, grcomplex output and float taps. This block takes in a signal stream and performs interger down - sampling (decimation) with a polyphase filterbank. The first input is the integer specifying how much to decimate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. The third input specifies the channel to extract. By default, the zeroth channel is used, which is the baseband channel (first Nyquist zone). The parameter specifies which channel to use since this class is capable of bandpass decimation. Given a complex input stream at a sampling rate of and a decimation rate of. the input frequency domain is split into channels that represent the Nyquist zones. Using the polyphase filterbank, we can select any one of these channels to decimate. The output signal will be the basebanded and decimated signal from that channel. This concept is very similar to the PFB channelizer (see grpfbchannelizerccf) where only a single channel is extracted at a time. The filter8217s taps should be based on the sampling rate before decimation. For example, using the GNU Radio8217s firdes utility to building filters, we build a low-pass filter with a sampling rate of. a 3-dB bandwidth of and a transition bandwidth of. We can also specify the out-of-band attenuation to use. and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. The PFB decimator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps. size()decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 08217s to make sure each filter has the same number of taps. The theory behind this block can be found in Chapter 6 of the following book. Build the polyphase filterbank decimator. Resets the filterbank8217s filter taps with the new prototype filter gnuradio. gr. pfbinterpolatorccf ( unsigned int interp . floatvector taps ) rarr grpfbinterpolatorccfsptr Polyphase filterbank interpolator with grcomplex input, grcomplex output and float taps. This block takes in a signal stream and performs interger up - sampling (interpolation) with a polyphase filterbank. The first input is the integer specifying how much to interpolate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. The filter8217s taps should be based on the interpolation rate specified. That is, the bandwidth specified is relative to the bandwidth after interpolation. For example, using the GNU Radio8217s firdes utility to building filters, we build a low-pass filter with a sampling rate of. a 3-dB bandwidth of and a transition bandwidth of. We can also specify the out-of-band attenuation to use, ATT, and the filter window function (a Blackman-harris window in this case). The first input is the gain, which is also specified as the interpolation rate so that the output levels are the same as the input (this creates an overall increase in power). The PFB interpolator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps. size()interp) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 08217s to make sure each filter has the same number of taps. The theory behind this block can be found in Chapter 7.1 of the following book. Build the polyphase filterbank interpolator. Print all of the filterbank taps to screen. Resets the filterbank8217s filter taps with the new prototype filterDebugging in gnuradio I am having a hard time with a quotsegmentation faultquot error. I am no expert in python (I just started to use it last week) but I find it difficult to believe that a segmentation fault error would appear in python code. However, I am not using any block made by me. So this is the part of my code where there is an segmentation fault: def measurecallback(self, kv): print quotMeasuringquot if self. stateSNRMEASURE: print quotMeasuring SNRquot self. lock() self. disconnect((self. grfilesource0, 0), (self. grthrottle0,0), self. fftsink) self. connect((self. grfilesource0, 0), (self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, 0), (self. grmultiplyconstff0, 0), self. pwrmeasure) self. unlock() time. sleep(5) snrval10math. log(self. pwrmeasure. level()) print quotSNR measured quot, snrval self. lock() self. disconnect((self. grfilesource0, 0),(self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, 0), (self. grmultiplyconstff0, 0), self. pwrmeasure) self. connect((self. grfilesource0, 0), self. grthrottle0, self. fftsink) self. unlock() So basically I am reading a signal from a filesource and showing its FFT on a graphical interface. Then when there is a callback from a button I made, this measurecallback(self, kv) is called and I change my circuit to measure SNR. I used some prints and discovered that the quotsegmentation faultquot happens at quottime. sleep(5)quot. Ri muito. Furthermore, the error doesnt happen all the times I run this code. Unfortunately, I dont know any type of debugging programs for gnuradio (I dont know if there is one) but it would be very handy because with just a quotSegmentation Faultquot message with no traceback it is difficult to know what to do. So, any suggestion about what might be causing this problem Open this post in threaded view Report Content as Inappropriate Re: Debugging in gnuradio It seems I found the solution, in spite of not knowing the reason. I just have to re-assign a new block to each block variable every time I re-connect them. It seems that connecting and disconnecting the same blocks several times was the cause for the segmentation fault. I am having a hard time with a quotsegmentation faultquot error. I am no expert in python (I just started to use it last week) but I find it difficult to believe that a segmentation fault error would appear in python code. However, I am not using any block made by me. So this is the part of my code where there is an segmentation fault: def measurecallback(self, kv): print quotMeasuringquot if self. stateSNRMEASURE: print quotMeasuring SNRquot self. lock() self. disconnect((self. grfilesource0, 0), (self. grthrottle0,0), self. fftsink) self. connect((self. grfilesource0, 0), (self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, 0), (self. grmultiplyconstff0, 0), self. pwrmeasure) self. unlock() time. sleep(5) snrval10math. log(self. pwrmeasure. level()) print quotSNR measured quot, snrval self. lock() self. disconnect((self. grfilesource0, 0),(self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, 0), (self. grmultiplyconstff0, 0), self. pwrmeasure) self. connect((self. grfilesource0, 0), self. grthrottle0, self. fftsink) self. unlock() So basically I am reading a signal from a filesource and showing its FFT on a graphical interface. Then when there is a callback from a button I made, this measurecallback(self, kv) is called and I change my circuit to measure SNR. I used some prints and discovered that the quotsegmentation faultquot happens at quottime. sleep(5)quot. Ri muito. Furthermore, the error doesnt happen all the times I run this code. Unfortunately, I dont know any type of debugging programs for gnuradio (I dont know if there is one) but it would be very handy because with just a quotSegmentation Faultquot message with no traceback it is difficult to know what to do. So, any suggestion about what might be causing this problem On Thu, Apr 5, 2012 at 5:11 AM, frankist lthidden email gt wrote: gt gt It seems I found the solution, in spite of not knowing the reason. gt gt I just have to re-assign a new block to each block variable every time I gt re-connect them. It seems that connecting and disconnecting the same blocks gt several times was the cause for the segmentation fault. You shouldnt have to do that. What version of GNU Radio are you using, and are you on a 32-bit platform This might be related to a bug in the disconnectreconnect calls that was patched recently. You can use the following link as a guide to debugging segfaults when they occur: gt frankist wrote: gtgt gtgt Hi, gtgt gtgt I am having a hard time with a quotsegmentation faultquot error. I am no expert gtgt in python (I just started to use it last week) but I find it difficult to gtgt believe that a segmentation fault error would appear in python code. gtgt However, I am not using any block made by me. gtgt gtgt So this is the part of my code where there is an segmentation fault: gtgt gtgt def measurecallback(self, kv): gtgt print quotMeasuringquot gtgt if self. stateSNRMEASURE: gtgt print quotMeasuring SNRquot gtgt self. lock() gtgt self. disconnect((self. grfilesource0, 0), gtgt (self. grthrottle0,0), self. fftsink) gtgt self. connect((self. grfilesource0, 0), gtgt (self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, 0), gtgt (self. grmultiplyconstff0, 0), self. pwrmeasure) gtgt self. unlock() gtgt time. sleep(5) gtgt snrval10math. log(self. pwrmeasure. level()) gtgt print quotSNR measured quot, snrval gtgt self. lock() gtgt self. disconnect((self. grfilesource0, gtgt 0),(self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, gtgt 0), (self. grmultiplyconstff0, 0), self. pwrmeasure) gtgt self. connect((self. grfilesource0, 0), self. grthrottle0, gtgt self. fftsink) gtgt self. unlock() gtgt gtgt So basically I am reading a signal from a filesource and showing its FFT gtgt on a graphical interface . Then when there is a callback from a button I gtgt made, this measurecallback(self, kv) is called and I change my circuit to gtgt measure SNR. gtgt gtgt I used some prints and discovered that the quotsegmentation faultquot happens at gtgt quottime. sleep(5)quot. Ri muito. Furthermore, the error doesnt happen all the times gtgt I run this code. gtgt gtgt Unfortunately, I dont know any type of debugging programs for gnuradio (I gtgt dont know if there is one) but it would be very handy because with just a gtgt quotSegmentation Faultquot message with no traceback it is difficult to know gtgt what to do. gtgt gtgt So, any suggestion about what might be causing this problem gtgt gtgt Francisco gtgt gt gt -- gt View this message in context: old. nabbleDebugging-in-gnuradio-tp33557751p33568799.html gt Sent from the GnuRadio mailing list archive at Nabble. gt gt gt gt Discuss-gnuradio mailing list gt hidden email gt lists. gnu. orgmailmanlistinfodiscuss-gnuradio In reply to this post by Tom Rondeau-2 Hmm. Muito obrigado. I think the problem may be related to the connectsdisconnects. Even if I am always reconnecting blocks, some freezes happen sometimes in the disconnect() commands. Is the patch you are refering to the new gnu version 3.5.3 Also, I would like to know if there is a better method than the quotsleepquot commands I used for letting the circuit for a short period of time. I mean, I used a head block to select just a few samples at the end of the circuit, but if I dont use the time. sleep(), the python script wont wait until I get the number of samples I need. So what I am asking is a type of semaphore command that lets the python script know when the gnuradio graph has already finished. PS: I am using a x64 ubuntu Tom Rondeau-2 wrote On Thu, Apr 5, 2012 at 5:11 AM, frankist ltfranciscopaisanahotmailgt wrote: gt gt It seems I found the solution, in spite of not knowing the reason. gt gt I just have to re-assign a new block to each block variable every time I gt re-connect them. It seems that connecting and disconnecting the same blocks gt several times was the cause for the segmentation fault. You shouldnt have to do that. What version of GNU Radio are you using, and are you on a 32-bit platform This might be related to a bug in the disconnectreconnect calls that was patched recently. You can use the following link as a guide to debugging segfaults when they occur: gt frankist wrote: gtgt gtgt Hi, gtgt gtgt I am having a hard time with a quotsegmentation faultquot error. I am no expert gtgt in python (I just started to use it last week) but I find it difficult to gtgt believe that a segmentation fault error would appear in python code. gtgt However, I am not using any block made by me. gtgt gtgt So this is the part of my code where there is an segmentation fault: gtgt gtgt def measurecallback(self, kv): gtgt print quotMeasuringquot gtgt if self. stateSNRMEASURE: gtgt print quotMeasuring SNRquot gtgt self. lock() gtgt self. disconnect((self. grfilesource0, 0), gtgt (self. grthrottle0,0), self. fftsink) gtgt self. connect((self. grfilesource0, 0), gtgt (self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, 0), gtgt (self. grmultiplyconstff0, 0), self. pwrmeasure) gtgt self. unlock() gtgt time. sleep(5) gtgt snrval10math. log(self. pwrmeasure. level()) gtgt print quotSNR measured quot, snrval gtgt self. lock() gtgt self. disconnect((self. grfilesource0, gtgt 0),(self. grcomplextomagsquared0, 0), (self. grmovingaverageff1, gtgt 0), (self. grmultiplyconstff0, 0), self. pwrmeasure) gtgt self. connect((self. grfilesource0, 0), self. grthrottle0, gtgt self. fftsink) gtgt self. unlock() gtgt gtgt So basically I am reading a signal from a filesource and showing its FFT gtgt on a graphical interface . Then when there is a callback from a button I gtgt made, this measurecallback(self, kv) is called and I change my circuit to gtgt measure SNR. gtgt gtgt I used some prints and discovered that the quotsegmentation faultquot happens at gtgt quottime. sleep(5)quot. Ri muito. Furthermore, the error doesnt happen all the times gtgt I run this code. gtgt gtgt Unfortunately, I dont know any type of debugging programs for gnuradio (I gtgt dont know if there is one) but it would be very handy because with just a gtgt quotSegmentation Faultquot message with no traceback it is difficult to know gtgt what to do. gtgt gtgt So, any suggestion about what might be causing this problem gtgt gtgt Francisco gtgt gt gt -- gt View this message in context: old. nabbleDebugging-in-gnuradio-tp33557751p33568799.html gt Sent from the GnuRadio mailing list archive at Nabble. gt gt gt gt Discuss-gnuradio mailing list gt Discuss-gnuradiognu. org gt lists. gnu. orgmailmanlistinfodiscuss-gnuradio Discuss-gnuradio mailing list Discuss-gnuradiognu. org lists. gnu. orgmailmanlistinfodiscuss-gnuradio retstr quotquotquot ltxml versionquot1.0quot encodingquotUTF-8quotgt n ltkml xmlnsquotopengis. netkml2.2quotgt n ltDocumentgt nt ltStyle idquotairplanequotgt ntt ltIconStylegt nttt ltIcongtlthrefgtairports. pnglthrefgtltIcongt ntt ltIconStylegt nt ltStylegt nt ltStyle idquotrangeringquotgt nt ltLineStylegt ntt ltcolorgt9f4f4fafltcolorgt ntt ltwidthgt2ltwidthgt nt ltLineStylegt nt ltStylegt nt ltStyle idquottrackquotgt nt ltLineStylegt ntt ltcolorgt5fff8f8fltcolorgt ntt ltwidthgt4ltwidthgt nt ltLineStylegt nt ltStylegt quotquotquot retstr quotquotquot t ltFoldergt ntt ltnamegtRange ringsltnamegt ntt ltopengt0ltopengt quotquotquot for rng in 100. 200. 300 : retstr quotquotquot ntt ltPlacemarkgt nttt ltnamegt i nmltnamegt nttt ltstyleUrlgtrangeringltstyleUrlgt nttt ltLi nearRinggt ntttt ltcoordinatesgt s ltcoordinatesgt nttt ltLinearRinggt ntt ltPlacemarkgt quotquotquot (rng, self. drawcircle( self. mycoords, rng),) retstr quotquotquot t ltFoldergt nt ltFoldergt ntt ltnamegtAircraft locationsltnamegt ntt ltopengt0ltopengt quotquotquot read the database and add KML q quot select distinct icao from positions where seen gt datetime(39now39, 39-5 minute39) quot c self. db. cursor() now we have a list icaolist of all ICAOs seen in the last 5 minutes for icao in icaolist: print quotICAO: xquot icao q quot select from positions where icao i and seen gt datetime(39now39, 39-2 hour39) ORDER BY seen DESC quot icao print quotTrack length: iquot len(track) if len (track) 0. lat track 0 3 if lat is None. lat 0 lon track 0 4 if lon is None. lon 0 alt track 0 2 if alt is None. alt 0 metricalt alt 0.3048 google earth takes meters, the commie bastards trackstr quot quot for pos in track: trackstr quot f. F. f quot (pos 4 , pos 3 , pos 2 0.3048 ) now get metadata q quot select ident from ident where icao i quot icao else. ident quot quot if ident is None: ident quotquot get most recent speedheadingvertical q quot select seen, speed, heading, vertical from vectors where icao i order by seen desc limit 1 quot icao retstr quot ntt ltPlacemarkgt nttt ltnamegt s ltnamegt nttt ltstyleUrlgtairplaneltstyleUrlgt nttt ltdescriptiongt ntttt ltCDATAAltitude: s ltbrgtHeading: i ltbrgtSpeed: i ltbrgtVertical speed: i ltbrgtICAO: x ltbrgtLast seen: s gt nttt ltdescriptiongt nttt ltPointgt ntttt ltaltitudeModegtabsoluteltaltitudeModegt ntttt ltextrudegt1ltextrudegt ntttt ltcoordinatesgt s. S. i ltcoordinatesgt nttt ltPointgt ntt ltPlacemarkgt quot (ident, alt, heading, speed, vertical, icao 0 , seen, lon, lat, metricalt, ) retstr quot ntt ltPlacemarkgt nttt ltstyleUrlgttrackltstyleUrlgt nttt ltLineStringgt ntttt ltextrudegt0ltextrudegt ntttt ltaltitudeModegtabsoluteltaltitudeModegt ntttt ltcoordinatesgt s ltcoordinatesgt nttt ltLineStringgt ntt ltPlacemarkgt quot (trackstr,)

No comments:

Post a Comment