gnuradio-c++ 利用fftw做傅里叶变换报错 linux系统下运行

问题描述

c++ 利用fftw做傅里叶变换报错 linux系统下运行
报错信息 fftw: alloc.c:269: assertion failed: p

#include <fftw3.h>namespace gr {  namespace howto {    peak_extract::sptr    peak_extract::make(int upper_limitint lower_limitint samp_ratebool boolean_timer)    {      return gnuradio::get_initial_sptr        (new peak_extract_impl(upper_limitlower_limitsamp_rateboolean_timer));    }    /*     * The private constructor     */    peak_extract_impl::peak_extract_impl(int upper_limitint lower_limitint samp_ratebool boolean_timer)      : gr::block(""peak_extract""              gr::io_signature::make(1 1 sizeof(gr_complex))              gr::io_signature::make(1 1 sizeof(int)))          d_upper_limit(upper_limit)          d_lower_limit(lower_limit)              d_samp_rate(samp_rate)          d_boolean_timer(boolean_timer)          d_packet_len(packet_len)          d_buffer((fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex)*d_packet_len))                     d_fft_plan(fftwf_plan_dft_1d(d_packet_len d_buffer d_buffer FFTW_FORWARD FFTW_ESTIMATE))    {}    /*     * Our virtual destructor.     */    peak_extract_impl::~peak_extract_impl()    {    fftwf_destroy_plan(d_fft_plan);    fftwf_free(d_buffer);    }    void    peak_extract_impl::forecast (int noutput_items gr_vector_int &ninput_items_required)    {        /* <+forecast+> e.g. ninput_items_required[0] = noutput_items */        ninput_items_required[0] = noutput_items;    }    int    peak_extract_impl::general_work (int noutput_items                       gr_vector_int &ninput_items                       gr_vector_const_void_star &input_items                       gr_vector_void_star &output_items)    {        const gr_complex *in = (const gr_complex *) input_items[0];        int *out = (int *) output_items[0];    memcpy(d_bufferind_packet_len*sizeof(fftwf_complex));    fftwf_execute(d_fft_plan);    int iindexN;        N=d_packet_len;    //M=sizeof(in) / sizeof(in[0]);    double maxmagnitude[N];    double real[N]imag[N];    for(i=0;i<d_packet_len;i++)    {        real[i]=d_buffer[i][0];        imag[i]=d_buffer[i][1];        magnitude[i]=sqrt((real[i]*real[i])+(imag[i]*imag[i]));    }        max=magnitude[0];        for (i=0;i<d_packet_len;i++)        {            if(magnitude[i]>max)                {                   max=magnitude[i];                   index=i;                }        }         *out=index*d_samp_rate/d_packet_len;        // Do <+signal processing+>        // Tell runtime system how many input items we consumed on        // each input stream.      //  consume_each (noutput_items);        // Tell runtime system how many output items we produced.        return noutput_items;    }  } /* namespace howto */} /* namespace gr */

解决方案

分配空间的问题。。。发现只要去掉FFTblock就可以了

解决方案二:
http://wenku.baidu.com/link?url=e9D7NYIUX9V4BdvbelMV-TyLndvLaV9BCiV6aHlr-65susO31812oK6UdyJ1H7w13DDdL90yVYs6QzUN0dHWIPQ29uJPrxAmcQ62kDSbaja

时间: 2024-11-17 19:37:41

gnuradio-c++ 利用fftw做傅里叶变换报错 linux系统下运行的相关文章

项目启动报错-linux系统tomcat重启报错

问题描述 linux系统tomcat重启报错 以下是启动是的错误信息: INFO: Starting Coyote HTTP/1.1 on http-8080 Jan 21, 2015 4:26:24 PM org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 Jan 21, 2015 4:26:24 PM org.apache.jk.server.JkMain start INFO:

环境配置报错-日文系统下Java程序中的中文注释报错

问题描述 日文系统下Java程序中的中文注释报错 我的系统是日文的, 只是一个最简单程序,因为程序中使用中文的注释,所以编译的时候报错,请指教怎样才能不报错? 参看: public class FloatTest { public static void main(String[] args) { float af = 5.2345556f; // 下面将看到af的值已经发生了改变 System.out.println(af); double a = 0.0; double c = Double

arcgis-ArcSDE 做POST报错Error: Operation Failed (-1).

问题描述 ArcSDE 做POST报错Error: Operation Failed (-1). 同一主机:Windows2008 R2 64位,ArcSDE for 11g 64bit 本机Oracle11g64位服务端,Oracle11g 32位客户端,Oracle10g 32为服务端 环境变量 path C:appAdministratorproduct11.2.0client_1bin;E:appAdministratorproduct11.2.0dbhome_1bin;C:Progra

我要循环&amp;amp;lt;div&amp;amp;gt; 并且让prod_func1,prod_func2,prod_func3,prod_func4该怎么做,程序报错说i不能识别

问题描述 <divstyle="height:80px;margin-top:10px;"><%for(inti=1;i<5;i++){%><div><%#DataBinder.Eval(Container.DataItem,string.Format("prod_func{0}",=i))%></div><%}%></div>我要循环<div>并且让prod_fu

web service-axis2处理webServices在was环境下报错,tomcat下正常

问题描述 axis2处理webServices在was环境下报错,tomcat下正常 关键代码如下 /** * 申诉请求 */ public static String appealRequest(String requestXML, ImageFileData[] file) { String result = ""; try { // 使用RPC方式调用WebService RPCServiceClient serviceClient = new RPCServiceClient(

ubuntu 系统下运行android虚拟机报错如下,怎么回事呢

问题描述 ubuntu 系统下运行android虚拟机报错如下,怎么回事呢 Starting emulator for AVD 'test' X Error of failed request: BadRequest (invalid request code or no such operation) Major opcode of failed request: 154 (GLX) Minor opcode of failed request: 19 (X_GLXQueryServerStr

ffmpeg在arm平台linux系统下,做h264的视频流截图时报错如下,大部分图片显示不全

问题描述 ffmpeg在arm平台linux系统下,做h264的视频流截图时报错如下,大部分图片显示不全 [h264 @ 0x24900] RTP: missed 1 packetsInvalid UE golomb codeInvalid UE golomb code[h264 @ 0x24900] error while decoding MB 10 44 bytestream -50[h264 @ 0x24900] concealing 119 DC 119 AC 119 MV error

linux系统下使用snmpset命令始终报错,,,

问题描述 linux系统下使用snmpset命令始终报错,,, [root@localhost 桌面]# snmpset -v2c -c public -On localhost system.sysName.0 s linux Error in packet. Reason: noAccess Failed object: .1.3.6.1.2.1.1.5.0 始终处于这个错误,请各路大神帮帮我,感激不尽,,,,我的conmpd.conf文件是: #######################

directx-DirectX10程序Debug模式下运行报错,Release模式运行正常一般是什么原因?

问题描述 DirectX10程序Debug模式下运行报错,Release模式运行正常一般是什么原因? 1.两种模式下,编译都没问题.2.运行Debug模式下报错,信息如下:Release模式下运行截图 附:进行了多次试验,Release总是运行正常,而Debug模式基本上都是运行出错,报错信息也是同一个(如上图),但偶尔的小概率能运行(大概百分之一二,这个概率是不确定的,只是我碰巧有一两次正常运行了)遍查了代码,发现不了问题.希望各位能够说说一般情况下可能是什么原因引起的. 解决方案 0xFFF