Skip to main content

Gnuradio Médio Em Movimento


Nas minhas tentativas recentes de medir a figura de ruído de um dongle rtl-sdr, notei que os resultados do método do duplo-poder e do método do fator Y diferem significativamente. Na tentativa de descobrir o motivo dessa diferença, fiz algumas medidas adicionais com diferentes tipos de sinais. Descobri que o detector de energia que implementei no GNU Radio comporta-se estranhamente. Parece que a potência de sinal indicada depende do fator de crista de sinal, que não deveria ser o caso. Atualização: conforme meu post de acompanhamento explica, eu estava usando uma configuração errada no analisador de espectro e no gerador de sinal. Antes de tudo, gostaria de esclarecer que o que estou fazendo aqui é comparar o poder indicado (em unidades relativas) para dois sinais de potência idêntica. Não estou tentando determinar o poder absoluto (digamos, em miliários). Como o GNU Radio FAQ explica sucintamente. O último é complicado com equipamentos SDR típicos. A configuração para essas experiências é semelhante à que descrevi na minha publicação sobre a figura do ruído. Estou usando um dongle Ezcap DVB-T sintonizado para 700,5 MHz. Estou medindo a potência em uma banda de 200 kHz que é compensada por -500 kHz da freqüência central. Tanto quanto posso ver pela FFT, esta banda está livre de esporas e outros artefatos do próprio receptor. O poder do sinal é medido pela multiplicação do sinal com um conjugado complexo de si e, em seguida, leva uma média móvel de 50000 amostras. Estou usando um amplificador Rohde Schwarz SMBV gerador de sinal vetorial que é capaz de produzir uma forma de onda arbitrária com uma potência de sinal total precisa. Como controle, eu também configurei um analisador de espectro FSV para medir a potência total do sinal na mesma faixa de 200 kHz que a configuração rtl-sdr. Por exemplo, isto é o que mostra um analisador de espectro para uma onda sinusoidal não modificada com um nível de -95 dBm ajustado no gerador: e isso é o que mostra para uma faixa de 100 kHz de ruído gaussiano, novamente com nível de -95 dBm: a potência medida No canal de 200 kHz em ambos os casos concorda bem com a configuração de energia no gerador. A diferença provavelmente vem de perdas no cabo (eu usei um coaxial LMR-195 de 60 cm de baixa perda que acompanha o USRP), conectores, erros na calibração de ambos os instrumentos e o fato de o FSV adicionar sua própria potência de ruído ao sinal . O importante, no entanto, é que a leitura de energia muda apenas para 0,19 dB ao ligar a modulação. Eu acho que isso está bem dentro do intervalo de erro de medição aceitável. Repetindo as mesmas duas medições usando o dongle rtl-sdr e o detector de energia GNU Radio: Observe que agora o sinal modulado mostra uma potência muito maior que a não modificada. A diferença é de 2,53 dB, o que não pode ser atribuído a erros aleatórios. Na verdade, esse efeito é repetível e não específico para o dtlt rtl-sdr. Ive repetiu as mesmas medidas usando um dispositivo USRP N200 com uma placa filha SBX. Também usei vários sinais diferentes, do ruído gaussiano de banda limitada, múltiplos sinais CW para um transportador modulado em amplitude. Os resultados estão resumidos na tabela abaixo. Para tornar as coisas mais claras, estou mostrando a potência indicada em relação ao CW. Eu usei -95 dBm de potência média para rtl-sdr e -100 dBm para USRP, para manter a relação sinal-ruído aproximadamente a mesma em ambos os dispositivos. Como você pode ver, ambos os dispositivos mostram um deslocamento para os sinais, que têm uma diferença significativa entre o pico e os poderes médios. Os offsets também são muito similares entre os dispositivos, algo que sugere que esse efeito não é causado pelo próprio dispositivo. Qualquer explicação devido ao design do receptor físico, posso imaginar resultados em um menor ganho para sinais com uma alta relação de potência de pico a médio. Então exatamente o oposto do que eu vi. Ele não parece ser causado por alguma lógica inteligente no ganho de ajuste do sintonizador para diferentes sinais. A diferença de ganho parece permanecer reduzida a poderes de sinal muito baixos. Penso que é improvável que tal otimização funcione em níveis muito baixos de sinal para ruído. Isso também exclui qualquer não-linearidade do receptor como a causa, tanto quanto eu posso dizer. Se eu estivesse usando um detector de energia analógico, esse tipo de efeito seria típico de um detector que não mede a potência do sinal diretamente (como um detector de diodo que possui uma característica exponencial em vez de quadrática). No entanto, eu calculo o poder do sinal numericamente e você não pode obter uma função quadrática mais exata do que x 2. Eu testei algumas teorias sobre erros numéricos. Na verdade, os resultados diferem um pouco entre a média móvel ou o filtro passe baixo de dizimagem. Eles também diferem entre o uso de blocos conjugados e múltiplos ou o bloqueio RMS. No entanto, as diferenças são insignificantes tanto quanto eu posso ver e não explicar as medidas. Eu escolhi a configuração do gráfico de fluxo mostrada acima porque produz figuras que são mais próximas de um cálculo idêntico feito em NumPy. Os erros numéricos também não explicam por que o mesmo gráfico de fluxo produz resultados válidos para um receptor simulado com blocos de fonte de sinal e ruído. Até agora estou fora das ideias, o que poderia estar causando isso. Postado por Toma Categorias: Analógico Adicione um novo comentáriognuradio. 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 filtro. 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 de 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 dizimação. Torneiras de 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 (int decimation. Torneiras do 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 fracionada (variação de fases do flutuador. Interpolação do flutuador) 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 banda estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. As entradas e saídas adicionais 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 (auto. 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 Passe) e dizimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de banda estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. As entradas e saídas adicionais 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 banda estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. As entradas e saídas adicionais 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 (auto. 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 Passe) e dizimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de banda estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. As entradas e saídas adicionais 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 banda estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. As entradas e saídas adicionais 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 (auto. 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 Passe) e dizimação. É ideal para um filtro de seleção 8220channel8221 e pode ser usado eficientemente para selecionar e decimar um sinal de banda estreita com entrada de largura de banda ampla. Usa uma única matriz de entrada para produzir uma matriz de saída única. As entradas e saídas adicionais 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 adiada. 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 (auto. 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 (auto. 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 (interpolação int. Torneiras de flutuador) rarr grinterpfirfilterfsfsptr Interpolação de filtro FIR com entrada flutuante, saída curta e torneiras flutuantes. 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 (auto. 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 (auto. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Rationalresamplerbaseccf (int interpolation. Int dizimação. Torneiras de flutuador) 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 (auto. Std :: vectorlt (grcomplex. Std :: allocatorlt (grcomplex) gt) gt taps) gnuradio. gr. Rationalresamplerbasefff (int interpolação. Int decimação. Torneiras do flutuador) 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 grrationalresamplerbasefsfstr. Rational Resampling Polyphase FIR filtro com entrada de flutuador, saída curta e flutuação 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. Grumpelresamplerbasesccsptr. Settaps (auto. 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 limites maxiter quanto tempo 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 limites maxiter quanto tempo 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 reamalamensão racional onde é um número racional próximo 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. Crie o resamplificador de arbitraçao 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 um número de filtros e cada filtro contém um número de torneiras (taps. size () decim). 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. A formatação de entrada e saída é feita usando um hierblock2 chamado pfbchannelizerccf. Isso pode levar em um único fluxo e gerar fluxos com base no comportamento descrito acima. Os toques do filtro8217s devem ser baseados na taxa de amostragem de entrada. Por exemplo, usando o utilitário GNU Radio8217s firdes para a construção de filtros, 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 de 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 do 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 temporização 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 simbolo 8217s. 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 nós viajamos através dos filtros no estado estacionário. Isto é, devido às diferenças naturais do relógio entre o transmissor e o receptor, drate representa essa diferença e atravessaria os caminhos de 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 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 Returns the taps of the matched filter for a particular channel Returns the current clock rate. grpfbclocksyncccfsptr. getdampingfactor ( self ) rarr float Returns the loop damping factor. grpfbclocksyncccfsptr. getdiffchanneltaps ( self . int channel ) rarr floatvector Returns the taps in the derivative filter for a particular channel grpfbclocksyncccfsptr. getdifftaps ( self ) rarr dummy5 Returns all of the taps of the derivative filter grpfbclocksyncccfsptr. getdifftapsasstring ( self ) rarr string Return the derivative filter taps as a formatted string for printing grpfbclocksyncccfsptr. getloopbandwidth ( self ) rarr float Returns the loop bandwidth. Returns all of the taps of the matched filter grpfbclocksyncccfsptr. gettapsasstring ( self ) rarr string Return the taps as a formatted string for printing Set the loop gain alpha. Set8217s the loop filter8217s alpha gain parameter. This value should really only be set by adjusting the loop bandwidth and damping factor. Set the loop gain beta. Set8217s the loop filter8217s beta gain parameter. This value should really only be set by adjusting the loop bandwidth and damping factor. Set the loop damping factor. Set the loop filter8217s damping factor to. The damping factor should be sqrt(2)2.0 for critically damped systems. Set it to anything else only if you know what you are doing. It must be a number between 0 and 1. When a new damping factor is set, the gains, alpha and beta, of the loop are recalculated by a call to updategains(). Set the loop bandwidth. Set the loop filter8217s bandwidth to. This should be between 2pi200 and 2pi100 (in radssamp). It must also be a positive number. When a new damping factor is set, the gains, alpha and beta, of the loop are recalculated by a call to updategains(). Set the maximum deviation from 0 drate can have grpfbclocksyncccfsptr. settaps ( self . floatvector taps . dummy5 ourtaps . std::vectorlt(p. grfirccf . std::allocatorlt(p. grfirccf)gt)gt ourfilter ) Resets the filterbank8217s filter taps with the new prototype filter gnuradio. gr. pfbclocksyncfff ( double sps . float gain . floatvector taps . unsigned int filtersize 32 . float initphase 0 . float maxratedeviation 1.5 ) rarr grpfbclocksyncfffsptr Timing synchronizer using polyphase filterbanks. This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. This approach works by setting up two filterbanks one filterbank contains the signal8217s pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) 1, sinc(0)8217 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. If the signal out of the derivative filters is din for the ith filter, and the output of the matched filter is xin, we calculate the error as: en (Re Re Im Im ) 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of xin adjusts the error term to do this. Second, the magnitude of xin scales the error term depending on the symbol8217s amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol8217s value. Using the magnitude of xin instead of just the sign is especially good for signals with low SNR. The error signal, en, gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop dk is the filter number in the filterbank we are on and drate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, drate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the drate is the frequency and dk is the phase. So we update drate and dk using the standard loop equations based on two error signals, dalpha and dbeta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for 8220gain,8221 which is dalpha while dbeta is equal to (gain2)4. The block8217s parameters are: Build the polyphase filterbank timing synchronizer. 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 filterHow to integrate a specific number of vectors element-wise in gnuradio Dear Gnuradio enthusiasts, Short version: Does someone have a good approach to average a specific (but large) number of vectors together element-wise with the exactly same relative weight Say I want the two vectors 1,2,3,3 and 1,2,3,4 coming one after another giving the output 1,2,3,3.5 - is there any block available that does this and if so: how (In reality I will have many more vectors and elements though). Long version: I39m building an application for radio astronomy using Gnuradio and the USRP. I think I have hit a point where I have to write my own custom blocks for gnuradio to accomplish what I want, but before I dive into that I want to ask you as well if you have already solved this current problem of mine. I have tried to google this extensively and gotten closer and closer but without finding exactly what I need. I have played with the Gnuradio-companion and find it very helpful. I have some python experience but not much C, hence my hesitation to dive into the custom block writing before I made sure no-one has already solved this. The grand plan is as follows: 1) Use an USRP to recieve a signal, I know how. 2) Divide the stream of samples into vectors, I know how. 3) Take the FFT of the vectors one by one, I know how. 4) Average the vectors coming from the FFT together element-wise. I don39t know how. 5) Save the averaged vector to a file, I know how. What I cannot solve is step 4: I need to take the N vectors (each of size M) coming from the FFT-block and sum them together element-wise to produce one vector of size M. I found Jonathan Corgans interesting reply to a similar question on quotHow to integrate a vector signalquot at lists. gnu. orgarchivehtmldiscuss-gnuradio2007-04msg00146.html where Jonathan advises to use the gr. singlepoleiirfilterxx block with a parameter 0ltalpha lt1. It seems to me that such an approach works well if one wants to average quota couplequot of vectors, and also if you want to apply weights to the averaging. But, if I want to average Exactly say 1027 vectors together with Exactly the same weight to all of them, it seems to me that I cannot use the singlepoleiirfilter. Am I mistaken At least I have not managed to make it do what I want. Perhaps this is the solution and I39m just confused by the signal processing language which I39m not used to yet (I have a more theoretical physicsmath background). I found Jonathan Corgans entries from 2006 on vector addition in Gnuradio, lists. gnu. orgarchivehtmlpatch-gnuradio2006-06msg00002.html and I can use the adder in Gnuradio companion. So, in principle I could split my vectors in N streams, convert each stream to a vector again, feed them to a vector adder with N inputs and then get the output I want. But it seems suboptimal to have to deal with this splitting step to N inputs. I just want to add the vectors element-wise. I found the simplera package which claims to do things for radio astronomy very similar to what I want to do (cgran. orgwikisimpleraProjectDescription ). But, the unfortunately I have not found any extensive documentation of the code and I have not yet managed to understand if I can extract a solution to my problem from there. To use part of the simplera package functionality as a black-box is unfortunately no option since I have similar projects in mind if I solve this one, but they would not be related to radio astronomy. Hence my question: Does someone have a good approach to average a specific (but large) number of vectors together element-wise with the exactly same relative weight Say I want the two vectors 1,2,3,3 and 1,2,3,4 coming one after another giving the output 1,2,3,3.5 - is there any block available that does this and if so: how Best regards, Eskil Varenius On Mon, Jun 24, 2013 at 02:09:51PM 0200, Eskil Varenius wrote: gt The grand plan is as follows: gt 1) Use an USRP to recieve a signal, I know how. gt 2) Divide the stream of samples into vectors, I know how. gt 3) Take the FFT of the vectors one by one, I know how. gt 4) Average the vectors coming from the FFT together element-wise. I dont know gt how. gt 5) Save the averaged vector to a file, I know how. gt gt What I cannot solve is step 4: I need to take the N vectors (each of size M) gt coming from the FFT-block and sum them together element-wise to produce one gt vector of size M. The spectral estimation toolbox (gr-specest) has a block to do this (movingaveragevff). You can get it through PyBOMBS, it is not yet 3.7-compatible, though. -- Karlsruhe Institute of Technology (KIT) Communications Engineering Lab (CEL) Dipl.-Ing. Martin Braun Research Associate Kaiserstrae 12 Building 05.01 76131 Karlsruhe Phone: 49 721 608-43790 Fax: 49 721 608-46071 cel. kit. edu KIT -- University of the State of Baden-Wrttemberg and National Laboratory of the Helmholtz Association Open this post in threaded view Report Content as Inappropriate Re: How to integrate a specific number of vectors element-wise in gnuradio In reply to this post by Eskil Varenius Dear Gnuradio enthusiasts, Short version: Does someone have a good approach to average a specific (but large) number of vectors together element-wise with the exactly same relative weight Say I want the two vectors 1,2,3,3 and 1,2,3,4 coming one after another giving the output 1,2,3,3.5 - is there any block available that does this and if so: how (In reality I will have many more vectors and elements though). Long version: Im building an application for radio astronomy using Gnuradio and the USRP. I think I have hit a point where I have to write my own custom blocks for gnuradio to accomplish what I want, but before I dive into that I want to ask you as well if you have already solved this current problem of mine. I have tried to google this extensively and gotten closer and closer but without finding exactly what I need. I have played with the Gnuradio-companion and find it very helpful. I have some python experience but not much C, hence my hesitation to dive into the custom block writing before I made sure no-one has already solved this. The grand plan is as follows: 1) Use an USRP to recieve a signal, I know how. 2) Divide the stream of samples into vectors, I know how. 3) Take the FFT of the vectors one by one, I know how. 4) Average the vectors coming from the FFT together element-wise. I dont know how. 5) Save the averaged vector to a file, I know how. What I cannot solve is step 4: I need to take the N vectors (each of size M) coming from the FFT-block and sum them together element-wise to produce one vector of size M. I found Jonathan Corgans interesting reply to a similar question on How to integrate a vector signal at lists. gnu. orgarchivehtmldiscuss-gnuradio2007-04msg00146.html where Jonathan advises to use the gr. singlepoleiirfilterxx block with a parameter 0ltalpha lt1. It seems to me that such an approach works well if one wants to average a couple of vectors, and also if you want to apply weights to the averaging. But, if I want to average Exactly say 1027 vectors together with Exactly the same weight to all of them, it seems to me that I cannot use the singlepoleiirfilter. Am I mistaken At least I have not managed to make it do what I want. Perhaps this is the solution and Im just confused by the signal processing language which Im not used to yet (I have a more theoretical physicsmath background). I found Jonathan Corgans entries from 2006 on vector addition in Gnuradio, lists. gnu. orgarchivehtmlpatch-gnuradio2006-06msg00002.html and I can use the adder in Gnuradio companion. So, in principle I could split my vectors in N streams, convert each stream to a vector again, feed them to a vector adder with N inputs and then get the output I want. But it seems suboptimal to have to deal with this splitting step to N inputs. I just want to add the vectors element-wise. I found the simplera package which claims to do things for radio astronomy very similar to what I want to do (cgran. orgwikisimpleraProjectDescription ). But, the unfortunately I have not found any extensive documentation of the code and I have not yet managed to understand if I can extract a solution to my problem from there. To use part of the simplera package functionality as a black-box is unfortunately no option since I have similar projects in mind if I solve this one, but they would not be related to radio astronomy. Hence my question: Does someone have a good approach to average a specific (but large) number of vectors together element-wise with the exactly same relative weight Say I want the two vectors 1,2,3,3 and 1,2,3,4 coming one after another giving the output 1,2,3,3.5 - is there any block available that does this and if so: how Best regards, Eskil Varenius Im curious as to why, in radio astronomy, you need to be able to control the number of FFTs you average together. Since nature isnt nearly so exacting as, for example, telecommunications, in that regard. The code in simplera is produced by a. grc flow-graph. The. grc flow-graph is shipped with the code, and such flow-graphs are very-nearly self-documenting. Theres also a README that comes with it. Since I maintain simplera as a very-much part-time time, and I have a handful of other applications I supportmaintain, and Im the maintainerauthor of build-gnuradio, I havent had time to write more extensive documentation. In reply to this post by Martin Braun (CEL) Hi everyone, After a long break since June I am now back learning about Gnuradio. I asked in June for a way to average vectors elementwise and Martin Braun suggested the movingaverageVff block in the gr-specest. He also said it would be available PyBOMBS. Now update: Since I had installed Gnuradio using the build-script I wanted to re-install it using pybombs. I uninstalled the old gnuradio by doing a quotsudo make uninstallquot in each build directory for the old release. Seems to work. Now I installed gnuradio 3.6 (since gr-specest is still only verified for 3.6, although I39m happy to see people working towards a 3.7 release). I did the install using the instructions on the pybombs quickstart page: git clone git:githubpybombspybombs cd pybombs git checkout gr-3.6.pybombs install gnuradio Gnuradio seemed to install without problems but: I realised I had path-problems since I could not start anything (gnuradio companion, import gnuradio etc. fails). Perhaps this was related to me using a custom target directory (optgnuradiopybombs). I looked around and found path instructions for custom directory installs at quotgnuradio. orgredmineprojectsgnuradiowikiUbuntuInstallInstalling-in-a-custom-directory quot, i. e. put the following in my. bashrc: GNU Radio installation export PATHPATH:optgnuradiopybombsbin export LDLIBRARYPATHLDLIBRARYPATH:optgnuradiopybombslib export PKGCONFIGPATHPKGCONFIGPATH:optgnuradiopybombslibpkgconfig export PYTHONPATHPYTHONPATH:optgnuradiopybombslibpython2.6site-packages However, that didn39t work completely - I still could not find the gnuradio python module. I realised two things: the 2.6 should probably be 2.7 for me, and also the pythonpath should end in dist-packages, not site-packages, since the site-packages folder was empty. After modifying the pythonpath with 2.7 and dist-packages everything runs, I can import gnuradio and also use gnuradio companion. So far so good Now for gr-specest. I tried to install it using app store (cool stuff, you guys are amazing) and also just command line which is equivalent, i. e. I run using quotsudo. pybombs install gr-specestquot I get a lot of output, but the perhaps most interesting one before it ends abruptly is: -- checking for module 39gruel39 -- package 39gruel39 not found -- Could NOT find GRUEL (missing: GRUELLIBRARIES GRUELINCLUDEDIRS) -- checking for module 39gnuradio-core39 -- package 39gnuradio-core39 not found -- Could NOT find GNURADIOCORE (missing: GNURADIOCORELIBRARIES GNURADIOCOREINCLUDEDIRS) CMake Error at CMakeLists. txt:100 (message): Gruel required to compile specest I am lost here. Any ideas I can give the rest of the output as well, but this is the showstopper as far as I can see. I have tried googling this, but it seems to me that the solution used is to use the build-gnuradio script instead of PyBOMBS. I could do that, but then I would not be able to enjoy installing gr-specest through the app-store ). Grateful for any advice. On Mon, Jun 24, 2013 at 02:09:51PM 0200, Eskil Varenius wrote: gt The grand plan is as follows: gt 1) Use an USRP to recieve a signal, I know how. gt 2) Divide the stream of samples into vectors, I know how. gt 3) Take the FFT of the vectors one by one, I know how. gt 4) Average the vectors coming from the FFT together element-wise. I don39t know gt how. gt 5) Save the averaged vector to a file, I know how. gt gt What I cannot solve is step 4: I need to take the N vectors (each of size M) gt coming from the FFT-block and sum them together element-wise to produce one gt vector of size M. The spectral estimation toolbox (gr-specest) has a block to do this (movingaveragevff). You can get it through PyBOMBS, it is not yet 3.7-compatible, though. -- Karlsruhe Institute of Technology (KIT) Communications Engineering Lab (CEL) Dipl.-Ing. Martin Braun Research Associate Kaiserstrae 12 Building 05.01 76131 Karlsruhe Phone: lta hrefquottel:2B492072120608-43790quot valuequot4972160843790quotgt49 721 608-43790 Fax: lta hrefquottel:2B492072120608-46071quot valuequot4972160846071quotgt49 721 608-46071 cel. kit. edu KIT -- University of the State of Baden-Wrttemberg and National Laboratory of the Helmholtz Association I updated gr-specest so it would compile with 3.7, see my repo on githubdfxx if you want to try that route. The changes were almost all namespace stuff and cmake stuff, i. e. I don39t think I broke anything. On Oct 4, 2013 7:33 AM, quotEskil Vareniusquot lthidden email gt wrote: Hi everyone, After a long break since June I am now back learning about Gnuradio. I asked in June for a way to average vectors elementwise and Martin Braun suggested the movingaverageVff block in the gr-specest. He also said it would be available PyBOMBS. Now update: Since I had installed Gnuradio using the build-script I wanted to re-install it using pybombs. I uninstalled the old gnuradio by doing a quotsudo make uninstallquot in each build directory for the old release. Seems to work. Now I installed gnuradio 3.6 (since gr-specest is still only verified for 3.6, although I39m happy to see people working towards a 3.7 release). I did the install using the instructions on the pybombs quickstart page: git clone git:githubpybombspybombs cd pybombs git checkout gr-3.6.pybombs install gnuradio Gnuradio seemed to install without problems but: I realised I had path-problems since I could not start anything (gnuradio companion, import gnuradio etc. fails). Perhaps this was related to me using a custom target directory (optgnuradiopybombs). I looked around and found path instructions for custom directory installs at quotgnuradio. orgredmineprojectsgnuradiowikiUbuntuInstallInstalling-in-a-custom-directory quot, i. e. put the following in my. bashrc: GNU Radio installation export PATHPATH:optgnuradiopybombsbin export LDLIBRARYPATHLDLIBRARYPATH:optgnuradiopybombslib export PKGCONFIGPATHPKGCONFIGPATH:optgnuradiopybombslibpkgconfig export PYTHONPATHPYTHONPATH:optgnuradiopybombslibpython2.6site-packages However, that didn39t work completely - I still could not find the gnuradio python module. I realised two things: the 2.6 should probably be 2.7 for me, and also the pythonpath should end in dist-packages, not site-packages, since the site-packages folder was empty. After modifying the pythonpath with 2.7 and dist-packages everything runs, I can import gnuradio and also use gnuradio companion. So far so good Now for gr-specest. I tried to install it using app store (cool stuff, you guys are amazing) and also just command line which is equivalent, i. e. I run using quotsudo. pybombs install gr-specestquot I get a lot of output, but the perhaps most interesting one before it ends abruptly is: -- checking for module 39gruel39 -- package 39gruel39 not found -- Could NOT find GRUEL (missing: GRUELLIBRARIES GRUELINCLUDEDIRS) -- checking for module 39gnuradio-core39 -- package 39gnuradio-core39 not found -- Could NOT find GNURADIOCORE (missing: GNURADIOCORELIBRARIES GNURADIOCOREINCLUDEDIRS) CMake Error at CMakeLists. txt:100 (message): Gruel required to compile specest I am lost here. Any ideas I can give the rest of the output as well, but this is the showstopper as far as I can see. I have tried googling this, but it seems to me that the solution used is to use the build-gnuradio script instead of PyBOMBS. I could do that, but then I would not be able to enjoy installing gr-specest through the app-store ). Grateful for any advice. On Mon, Jun 24, 2013 at 02:09:51PM 0200, Eskil Varenius wrote: gt The grand plan is as follows: gt 1) Use an USRP to recieve a signal, I know how. gt 2) Divide the stream of samples into vectors, I know how. gt 3) Take the FFT of the vectors one by one, I know how. gt 4) Average the vectors coming from the FFT together element-wise. I don39t know gt how. gt 5) Save the averaged vector to a file, I know how. gt gt What I cannot solve is step 4: I need to take the N vectors (each of size M) gt coming from the FFT-block and sum them together element-wise to produce one gt vector of size M. The spectral estimation toolbox (gr-specest) has a block to do this (movingaveragevff). You can get it through PyBOMBS, it is not yet 3.7-compatible, though. -- Karlsruhe Institute of Technology (KIT) Communications Engineering Lab (CEL) Dipl.-Ing. Martin Braun Research Associate Kaiserstrae 12 Building 05.01 76131 Karlsruhe Phone: lta hrefquottel:2B492072120608-43790quot valuequot4972160843790quot targetquotblankquotgt49 721 608-43790 Fax: lta hrefquottel:2B492072120608-46071quot valuequot4972160846071quot targetquotblankquotgt49 721 608-46071 cel. kit. edu KIT -- University of the State of Baden-Wrttemberg and National Laboratory of the Helmholtz Association Thanks for the link, sounds interesting. I will wait a few days to see if someone has ideas on the PyBOMBS issues I experience. Else I will try gr 3.7 and your specest version. I updated gr-specest so it would compile with 3.7, see my repo on githubdfxx if you want to try that route. The changes were almost all namespace stuff and cmake stuff, i. e. I don39t think I broke anything. On Oct 4, 2013 7:33 AM, quotEskil Vareniusquot lthidden email gt wrote: Hi everyone, After a long break since June I am now back learning about Gnuradio. I asked in June for a way to average vectors elementwise and Martin Braun suggested the movingaverageVff block in the gr-specest. He also said it would be available PyBOMBS. Now update: Since I had installed Gnuradio using the build-script I wanted to re-install it using pybombs. I uninstalled the old gnuradio by doing a quotsudo make uninstallquot in each build directory for the old release. Seems to work. Now I installed gnuradio 3.6 (since gr-specest is still only verified for 3.6, although I39m happy to see people working towards a 3.7 release). I did the install using the instructions on the pybombs quickstart page: git clone git:githubpybombspybombs cd pybombs git checkout gr-3.6.pybombs install gnuradio Gnuradio seemed to install without problems but: I realised I had path-problems since I could not start anything (gnuradio companion, import gnuradio etc. fails). Perhaps this was related to me using a custom target directory (optgnuradiopybombs). I looked around and found path instructions for custom directory installs at quotgnuradio. orgredmineprojectsgnuradiowikiUbuntuInstallInstalling-in-a-custom-directory quot, i. e. put the following in my. bashrc: GNU Radio installation export PATHPATH:optgnuradiopybombsbin export LDLIBRARYPATHLDLIBRARYPATH:optgnuradiopybombslib export PKGCONFIGPATHPKGCONFIGPATH:optgnuradiopybombslibpkgconfig export PYTHONPATHPYTHONPATH:optgnuradiopybombslibpython2.6site-packages However, that didn39t work completely - I still could not find the gnuradio python module. I realised two things: the 2.6 should probably be 2.7 for me, and also the pythonpath should end in dist-packages, not site-packages, since the site-packages folder was empty. After modifying the pythonpath with 2.7 and dist-packages everything runs, I can import gnuradio and also use gnuradio companion. So far so good Now for gr-specest. I tried to install it using app store (cool stuff, you guys are amazing) and also just command line which is equivalent, i. e. I run using quotsudo. pybombs install gr-specestquot I get a lot of output, but the perhaps most interesting one before it ends abruptly is: -- checking for module 39gruel39 -- package 39gruel39 not found -- Could NOT find GRUEL (missing: GRUELLIBRARIES GRUELINCLUDEDIRS) -- checking for module 39gnuradio-core39 -- package 39gnuradio-core39 not found -- Could NOT find GNURADIOCORE (missing: GNURADIOCORELIBRARIES GNURADIOCOREINCLUDEDIRS) CMake Error at CMakeLists. txt:100 (message): Gruel required to compile specest I am lost here. Any ideas I can give the rest of the output as well, but this is the showstopper as far as I can see. I have tried googling this, but it seems to me that the solution used is to use the build-gnuradio script instead of PyBOMBS. I could do that, but then I would not be able to enjoy installing gr-specest through the app-store ). Grateful for any advice. On Mon, Jun 24, 2013 at 02:09:51PM 0200, Eskil Varenius wrote: gt The grand plan is as follows: gt 1) Use an USRP to recieve a signal, I know how. gt 2) Divide the stream of samples into vectors, I know how. gt 3) Take the FFT of the vectors one by one, I know how. gt 4) Average the vectors coming from the FFT together element-wise. I don39t know gt how. gt 5) Save the averaged vector to a file, I know how. gt gt What I cannot solve is step 4: I need to take the N vectors (each of size M) gt coming from the FFT-block and sum them together element-wise to produce one gt vector of size M. The spectral estimation toolbox (gr-specest) has a block to do this (movingaveragevff). You can get it through PyBOMBS, it is not yet 3.7-compatible, though. -- Karlsruhe Institute of Technology (KIT) Communications Engineering Lab (CEL) Dipl.-Ing. Martin Braun Research Associate Kaiserstrae 12 Building 05.01 76131 Karlsruhe Phone: lta hrefquottel:2B492072120608-43790quot valuequot4972160843790quot targetquotblankquotgt49 721 608-43790 Fax: lta hrefquottel:2B492072120608-46071quot valuequot4972160846071quot targetquotblankquotgt49 721 608-46071 cel. kit. edu KIT -- University of the State of Baden-Wrttemberg and National Laboratory of the Helmholtz Association I uninstalled what I had installed through PyBOMBS and installed Gnuradio 3.7 through the buildgnuradio script. Then I tried Jareds repo for specest with 3.7 (githubdfxx ) and it seems to compile just fine, well done I can also import specest in python without problems. Now: I would very much like to use the block movingaveragevff in Gnuradio Companion. Unfortunately it seems there are no xml files for that block, hence invisible to the GRC. I got a hint from Martin Braun that I could use the quotgrmodtool makexmlquot command to generate this. Unfortunately it seems that I don39t understand how to use it: ------------------------ grspecestjared ls apps AUTHORS build cmake CMakeLists. txt COPYING docs examples grc include lib python README swig grspecestjared grmodtool makexml movingaveragevff GNU Radio module name identified: specest Warning: This is an experimental feature. Don39t expect any magic. Searching for matching files in lib: None found. ------------------------- There is a file called movingaveragevff. cc in the lib directory, so I guess something more is needed here which I don39t know about. I tried looking at the page gnuradio. orgredmineprojectsgnuradiowikiOutOfTreeModulesversion16Making-your-blocks-available-in-GRC where there are links to example xml blocks to understand a bit more, but it seems these links are broken. Also the link to the grblock documentation in the next section (There39s more. ) is broken. I39m grateful for any hints on how to make the block movingaveragevff visible in the GRC. I updated gr-specest so it would compile with 3.7, see my repo on githubdfxx if you want to try that route. The changes were almost all namespace stuff and cmake stuff, i. e. I don39t think I broke anything. On Oct 4, 2013 7:33 AM, quotEskil Vareniusquot lthidden email gt wrote: Hi everyone, After a long break since June I am now back learning about Gnuradio. I asked in June for a way to average vectors elementwise and Martin Braun suggested the movingaverageVff block in the gr-specest. He also said it would be available PyBOMBS. Now update: Since I had installed Gnuradio using the build-script I wanted to re-install it using pybombs. I uninstalled the old gnuradio by doing a quotsudo make uninstallquot in each build directory for the old release. Seems to work. Now I installed gnuradio 3.6 (since gr-specest is still only verified for 3.6, although I39m happy to see people working towards a 3.7 release). I did the install using the instructions on the pybombs quickstart page: git clone git:githubpybombspybombs cd pybombs git checkout gr-3.6.pybombs install gnuradio Gnuradio seemed to install without problems but: I realised I had path-problems since I could not start anything (gnuradio companion, import gnuradio etc. fails). Perhaps this was related to me using a custom target directory (optgnuradiopybombs). I looked around and found path instructions for custom directory installs at quotgnuradio. orgredmineprojectsgnuradiowikiUbuntuInstallInstalling-in-a-custom-directory quot, i. e. put the following in my. bashrc: GNU Radio installation export PATHPATH:optgnuradiopybombsbin export LDLIBRARYPATHLDLIBRARYPATH:optgnuradiopybombslib export PKGCONFIGPATHPKGCONFIGPATH:optgnuradiopybombslibpkgconfig export PYTHONPATHPYTHONPATH:optgnuradiopybombslibpython2.6site-packages However, that didn39t work completely - I still could not find the gnuradio python module. I realised two things: the 2.6 should probably be 2.7 for me, and also the pythonpath should end in dist-packages, not site-packages, since the site-packages folder was empty. After modifying the pythonpath with 2.7 and dist-packages everything runs, I can import gnuradio and also use gnuradio companion. So far so good Now for gr-specest. I tried to install it using app store (cool stuff, you guys are amazing) and also just command line which is equivalent, i. e. I run using quotsudo. pybombs install gr-specestquot I get a lot of output, but the perhaps most interesting one before it ends abruptly is: -- checking for module 39gruel39 -- package 39gruel39 not found -- Could NOT find GRUEL (missing: GRUELLIBRARIES GRUELINCLUDEDIRS) -- checking for module 39gnuradio-core39 -- package 39gnuradio-core39 not found -- Could NOT find GNURADIOCORE (missing: GNURADIOCORELIBRARIES GNURADIOCOREINCLUDEDIRS) CMake Error at CMakeLists. txt:100 (message): Gruel required to compile specest I am lost here. Any ideas I can give the rest of the output as well, but this is the showstopper as far as I can see. I have tried googling this, but it seems to me that the solution used is to use the build-gnuradio script instead of PyBOMBS. I could do that, but then I would not be able to enjoy installing gr-specest through the app-store ). Grateful for any advice. On Mon, Jun 24, 2013 at 02:09:51PM 0200, Eskil Varenius wrote: gt The grand plan is as follows: gt 1) Use an USRP to recieve a signal, I know how. gt 2) Divide the stream of samples into vectors, I know how. gt 3) Take the FFT of the vectors one by one, I know how. gt 4) Average the vectors coming from the FFT together element-wise. I don39t know gt how. gt 5) Save the averaged vector to a file, I know how. gt gt What I cannot solve is step 4: I need to take the N vectors (each of size M) gt coming from the FFT-block and sum them together element-wise to produce one gt vector of size M. The spectral estimation toolbox (gr-specest) has a block to do this (movingaveragevff). You can get it through PyBOMBS, it is not yet 3.7-compatible, though. -- Karlsruhe Institute of Technology (KIT) Communications Engineering Lab (CEL) Dipl.-Ing. Martin Braun Research Associate Kaiserstrae 12 Building 05.01 76131 Karlsruhe Phone: lta hrefquottel:2B492072120608-43790quot valuequot4972160843790quot targetquotblankquotgt49 721 608-43790 Fax: lta hrefquottel:2B492072120608-46071quot valuequot4972160846071quot targetquotblankquotgt49 721 608-46071 cel. kit. edu KIT -- University of the State of Baden-Wrttemberg and National Laboratory of the Helmholtz Association I39ve been poking around in other GRC files to find examples. The ones in specest are a little tough around the edges, but I39ve found the ones in GNURadiogr-fft and other sub blocks of GNURadio to be decent examples. Rgrep has been helpful. On Oct 8, 2013 1:26 AM, quotEskil Vareniusquot lthidden email gt wrote: I uninstalled what I had installed through PyBOMBS and installed Gnuradio 3.7 through the buildgnuradio script. Then I tried Jareds repo for specest with 3.7 (githubdfxx ) and it seems to compile just fine, well done I can also import specest in python without problems. Now: I would very much like to use the block movingaveragevff in Gnuradio Companion. Unfortunately it seems there are no xml files for that block, hence invisible to the GRC. I got a hint from Martin Braun that I could use the quotgrmodtool makexmlquot command to generate this. Unfortunately it seems that I don39t understand how to use it: ------------------------ grspecestjared ls apps AUTHORS build cmake CMakeLists. txt COPYING docs examples grc include lib python README swig grspecestjared grmodtool makexml movingaveragevff GNU Radio module name identified: specest Warning: This is an experimental feature. Don39t expect any magic. Searching for matching files in lib: None found. ------------------------- There is a file called movingaveragevff. cc in the lib directory, so I guess something more is needed here which I don39t know about. I tried looking at the page gnuradio. orgredmineprojectsgnuradiowikiOutOfTreeModulesversion16Making-your-blocks-available-in-GRC where there are links to example xml blocks to understand a bit more, but it seems these links are broken. Also the link to the grblock documentation in the next section (There39s more. ) is broken. I39m grateful for any hints on how to make the block movingaveragevff visible in the GRC. I updated gr-specest so it would compile with 3.7, see my repo on githubdfxx if you want to try that route. The changes were almost all namespace stuff and cmake stuff, i. e. I don39t think I broke anything. On Oct 4, 2013 7:33 AM, quotEskil Vareniusquot lthidden email gt wrote: Hi everyone, After a long break since June I am now back learning about Gnuradio. I asked in June for a way to average vectors elementwise and Martin Braun suggested the movingaverageVff block in the gr-specest. He also said it would be available PyBOMBS. Now update: Since I had installed Gnuradio using the build-script I wanted to re-install it using pybombs. I uninstalled the old gnuradio by doing a quotsudo make uninstallquot in each build directory for the old release. Seems to work. Now I installed gnuradio 3.6 (since gr-specest is still only verified for 3.6, although I39m happy to see people working towards a 3.7 release). I did the install using the instructions on the pybombs quickstart page: git clone git:githubpybombspybombs cd pybombs git checkout gr-3.6.pybombs install gnuradio Gnuradio seemed to install without problems but: I realised I had path-problems since I could not start anything (gnuradio companion, import gnuradio etc. fails). Perhaps this was related to me using a custom target directory (optgnuradiopybombs). I looked around and found path instructions for custom directory installs at quotgnuradio. orgredmineprojectsgnuradiowikiUbuntuInstallInstalling-in-a-custom-directory quot, i. e. put the following in my. bashrc: GNU Radio installation export PATHPATH:optgnuradiopybombsbin export LDLIBRARYPATHLDLIBRARYPATH:optgnuradiopybombslib export PKGCONFIGPATHPKGCONFIGPATH:optgnuradiopybombslibpkgconfig export PYTHONPATHPYTHONPATH:optgnuradiopybombslibpython2.6site-packages However, that didn39t work completely - I still could not find the gnuradio python module. I realised two things: the 2.6 should probably be 2.7 for me, and also the pythonpath should end in dist-packages, not site-packages, since the site-packages folder was empty. After modifying the pythonpath with 2.7 and dist-packages everything runs, I can import gnuradio and also use gnuradio companion. So far so good Now for gr-specest. I tried to install it using app store (cool stuff, you guys are amazing) and also just command line which is equivalent, i. e. I run using quotsudo. pybombs install gr-specestquot I get a lot of output, but the perhaps most interesting one before it ends abruptly is: -- checking for module 39gruel39 -- package 39gruel39 not found -- Could NOT find GRUEL (missing: GRUELLIBRARIES GRUELINCLUDEDIRS) -- checking for module 39gnuradio-core39 -- package 39gnuradio-core39 not found -- Could NOT find GNURADIOCORE (missing: GNURADIOCORELIBRARIES GNURADIOCOREINCLUDEDIRS) CMake Error at CMakeLists. txt:100 (message): Gruel required to compile specest I am lost here. Any ideas I can give the rest of the output as well, but this is the showstopper as far as I can see. I have tried googling this, but it seems to me that the solution used is to use the build-gnuradio script instead of PyBOMBS. I could do that, but then I would not be able to enjoy installing gr-specest through the app-store ). Grateful for any advice. On Mon, Jun 24, 2013 at 02:09:51PM 0200, Eskil Varenius wrote: gt The grand plan is as follows: gt 1) Use an USRP to recieve a signal, I know how. gt 2) Divide the stream of samples into vectors, I know how. gt 3) Take the FFT of the vectors one by one, I know how. gt 4) Average the vectors coming from the FFT together element-wise. I don39t know gt how. gt 5) Save the averaged vector to a file, I know how. gt gt What I cannot solve is step 4: I need to take the N vectors (each of size M) gt coming from the FFT-block and sum them together element-wise to produce one gt vector of size M. The spectral estimation toolbox (gr-specest) has a block to do this (movingaveragevff). You can get it through PyBOMBS, it is not yet 3.7-compatible, though. -- Karlsruhe Institute of Technology (KIT) Communications Engineering Lab (CEL) Dipl.-Ing. Martin Braun Research Associate Kaiserstrae 12 Building 05.01 76131 Karlsruhe Phone: lta hrefquottel:2B492072120608-43790quot valuequot4972160843790quot targetquotblankquotgt49 721 608-43790 Fax: lta hrefquottel:2B492072120608-46071quot valuequot4972160846071quot targetquotblankquotgt49 721 608-46071 cel. kit. edu KIT -- University of the State of Baden-Wrttemberg and National Laboratory of the Helmholtz Association Thanks for the ideas, I could do that and Rgrep seems useful indeed. However, I39m new to coding Gnuradio and would like to use the tools provided as far as possible, i. e. I would very much like to use the grmodtool to help me with creating the xml files. But, after some investigations it seems the grmodtool cannot be used in this case since there is no quotimplquot file for the movingaveragevff. cc. This raises a few basic questions which I39ve tried to answer reading e. g. the coding guide at gnuradio. orgredmineprojectsgnuradiowikiCodingguideimpl and gnuradio. orgredmineprojectsgnuradiowikiBlocksCodingGuideImplementation-Source-File. But these instructions are I feel a bit over my head at the moment since I39m new to the block coding, so instead I have three more basic questions which I hope someone could help me with: 1) What is the relation between cc files in the lib directory with and without the impl suffix 2) Does the file movingaveragevff. cc need to be converted into a impl. cc file before I can use this block with gnuradio companion, or can I go ahead and write an XML file for the current block files 3) Where should I start reading if I want to learn how to convert the block movingaveragevff to something that can be recognized by the grmodtool makexml I39m sorry if these questions are stupid or the wrong forum, but I39m very grateful for all ideas and pointers to get me on the right track. If there39s a better place to ask these things, please let me know. I39ve been poking around in other GRC files to find examples. The ones in specest are a little tough around the edges, but I39ve found the ones in GNURadiogr-fft and other sub blocks of GNURadio to be decent examples. Rgrep has been helpful. On Oct 8, 2013 1:26 AM, quotEskil Vareniusquot lthidden email gt wrote: I uninstalled what I had installed through PyBOMBS and installed Gnuradio 3.7 through the buildgnuradio script. Then I tried Jareds repo for specest with 3.7 (githubdfxx ) and it seems to compile just fine, well done I can also import specest in python without problems. Now: I would very much like to use the block movingaveragevff in Gnuradio Companion. Unfortunately it seems there are no xml files for that block, hence invisible to the GRC. I got a hint from Martin Braun that I could use the quotgrmodtool makexmlquot command to generate this. Unfortunately it seems that I don39t understand how to use it: ------------------------ grspecestjared ls apps AUTHORS build cmake CMakeLists. txt COPYING docs examples grc include lib python README swig grspecestjared grmodtool makexml movingaveragevff GNU Radio module name identified: specest Warning: This is an experimental feature. Don39t expect any magic. Searching for matching files in lib: None found. ------------------------- There is a file called movingaveragevff. cc in the lib directory, so I guess something more is needed here which I don39t know about. I tried looking at the page gnuradio. orgredmineprojectsgnuradiowikiOutOfTreeModulesversion16Making-your-blocks-available-in-GRC where there are links to example xml blocks to understand a bit more, but it seems these links are broken. Also the link to the grblock documentation in the next section (There39s more. ) is broken. I39m grateful for any hints on how to make the block movingaveragevff visible in the GRC. I updated gr-specest so it would compile with 3.7, see my repo on githubdfxx if you want to try that route. The changes were almost all namespace stuff and cmake stuff, i. e. I don39t think I broke anything. On Oct 4, 2013 7:33 AM, quotEskil Vareniusquot lthidden email gt wrote: Hi everyone, After a long break since June I am now back learning about Gnuradio. I asked in June for a way to average vectors elementwise and Martin Braun suggested the movingaverageVff block in the gr-specest. He also said it would be available PyBOMBS. Now update: Since I had installed Gnuradio using the build-script I wanted to re-install it using pybombs. I uninstalled the old gnuradio by doing a quotsudo make uninstallquot in each build directory for the old release. Seems to work. Now I installed gnuradio 3.6 (since gr-specest is still only verified for 3.6, although I39m happy to see people working towards a 3.7 release). I did the install using the instructions on the pybombs quickstart page: git clone git:githubpybombspybombs cd pybombs git checkout gr-3.6.pybombs install gnuradio Gnuradio seemed to install without problems but: I realised I had path-problems since I could not start anything (gnuradio companion, import gnuradio etc. fails). Perhaps this was related to me using a custom target directory (optgnuradiopybombs). I looked around and found path instructions for custom directory installs at quotgnuradio. orgredmineprojectsgnuradiowikiUbuntuInstallInstalling-in-a-custom-directory quot, i. e. put the following in my. bashrc: GNU Radio installation export PATHPATH:optgnuradiopybombsbin export LDLIBRARYPATHLDLIBRARYPATH:optgnuradiopybombslib export PKGCONFIGPATHPKGCONFIGPATH:optgnuradiopybombslibpkgconfig export PYTHONPATHPYTHONPATH:optgnuradiopybombslibpython2.6site-packages However, that didn39t work completely - I still could not find the gnuradio python module. I realised two things: the 2.6 should probably be 2.7 for me, and also the pythonpath should end in dist-packages, not site-packages, since the site-packages folder was empty. After modifying the pythonpath with 2.7 and dist-packages everything runs, I can import gnuradio and also use gnuradio companion. So far so good Now for gr-specest. I tried to install it using app store (cool stuff, you guys are amazing) and also just command line which is equivalent, i. e. I run using quotsudo. pybombs install gr-specestquot I get a lot of output, but the perhaps most interesting one before it ends abruptly is: -- checking for module 39gruel39 -- package 39gruel39 not found -- Could NOT find GRUEL (missing: GRUELLIBRARIES GRUELINCLUDEDIRS) -- checking for module 39gnuradio-core39 -- package 39gnuradio-core39 not found -- Could NOT find GNURADIOCORE (missing: GNURADIOCORELIBRARIES GNURADIOCOREINCLUDEDIRS) CMake Error at CMakeLists. txt:100 (message): Gruel required to compile specest I am lost here. Any ideas I can give the rest of the output as well, but this is the showstopper as far as I can see. I have tried googling this, but it seems to me that the solution used is to use the build-gnuradio script instead of PyBOMBS. I could do that, but then I would not be able to enjoy installing gr-specest through the app-store ). Grateful for any advice. On Mon, Jun 24, 2013 at 02:09:51PM 0200, Eskil Varenius wrote: gt The grand plan is as follows: gt 1) Use an USRP to recieve a signal, I know how. gt 2) Divide the stream of samples into vectors, I know how. gt 3) Take the FFT of the vectors one by one, I know how. gt 4) Average the vectors coming from the FFT together element-wise. I don39t know gt how. gt 5) Save the averaged vector to a file, I know how. gt gt What I cannot solve is step 4: I need to take the N vectors (each of size M) gt coming from the FFT-block and sum them together element-wise to produce one gt vector of size M. The spectral estimation toolbox (gr-specest) has a block to do this (movingaveragevff). You can get it through PyBOMBS, it is not yet 3.7-compatible, though. -- Karlsruhe Institute of Technology (KIT) Communications Engineering Lab (CEL) Dipl.-Ing. Martin Braun Research Associate Kaiserstrae 12 Building 05.01 76131 Karlsruhe Phone: lta hrefquottel:2B492072120608-43790quot valuequot4972160843790quot targetquotblankquotgt49 721 608-43790 Fax: lta hrefquottel:2B492072120608-46071quot valuequot4972160846071quot targetquotblankquotgt49 721 608-46071 cel. kit. edu KIT -- University of the State of Baden-Wrttemberg and National Laboratory of the Helmholtz Association

Comments

Popular posts from this blog

Forex Mnt

A OANDA usa cookies para tornar nossos sites fáceis de usar e personalizados para nossos visitantes. Os cookies não podem ser usados ​​para identificá-lo pessoalmente. Ao visitar o nosso site, você aceita o uso de cookies da OANDA8217 de acordo com nossa Política de Privacidade. Para bloquear, excluir ou gerenciar cookies, visite aboutcookies. org. A restrição de cookies impedirá que você se beneficie de algumas das funcionalidades do nosso site. Baixe nossos aplicativos móveis Selecione a conta: Tugrik mongol O T246gr246g mongol ou Tugrik é a moeda oficial da Mongólia. As notas estão em denominações de 1, 3, 5, 10, 20, 50, 100, 500, 1.000, 5.000 e 10.000 moedas estão em denominações de 20, 50, 100 e 200. A importação de moeda local é limitada a 815 Tugrik. Exportar moedas locais e estrangeiras também é limitado a 815 Tugrik. A economia da Mongólia8217 baseou-se nos setores agrícola e de pastoreio. O país possui extensos depósitos minerais. A economia melhorou em 200282112003 como resu...