当前位置: 代码迷 >> 多核软件开发 >> 怎么将FFT函数执行后的结果再存到数据库中
  详细解决方案

怎么将FFT函数执行后的结果再存到数据库中

热度:1958   发布时间:2013-02-26 00:00:00.0
如何将FFT函数执行后的结果再存到数据库中
//传入要进行傅里叶变换的变量
void CFFT::FFT_test (LPCTSTR c)
{
//CString strAllData="-1.11131700 0 -1.23425700 0 -0.86663300 0 -0.54973000 0";
char input[20480];
int i,n,r;
float xreal[N],ximag[N];
char *p;
sprintf(input, "%s" ,c);
p = input;
i = 0;
while (1)
{
if ( p== NULL) 
break;
r=sscanf( p, "%f%f%n", xreal + i, ximag + i,&n);
//if ( EOF== r) 
// break;
if ( 2== r) 
{
i++;
if (i >= N/2-1) 
break;
p+=n;
}
}
n = i;
printf("n=%d\n",n); // 要求 n 为 2 的整数幂

for (i=0;i < n;i++) 
{
printf("xreal[%d]==%lg,ximag[%d]==%lg\n",i,xreal[i],i,ximag[i]);
}

FFT (xreal, ximag, n);
///////////////以下代码为把数据写入数据库/////////////////////
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置INSERT语句
_bstr_t vSQL;
for (i=0;i < n;i++) 
{
printf("xreal[%d]==%lg,ximag[%d]==%lg\n",i,xreal[i],i,ximag[i]);
vSQL = "INSERT INTO tb_tdatavalue(p_no,p_type,p_value_s,p_value_x) VALUES('a','Channel 1 Timewave Amplitude','" + xreal[i] + "','" + ximag[i] + "')";
m_AdoConn.ExecuteSQL(vSQL);
}
//断开与数据库的连接
m_AdoConn.ExitConnect(); /////////////////////////////////////////////////////
  IFFT (xreal, ximag, n);
}
通过FFT函数,得出的了傅里叶变换后的实部和虚部的变量,我想把变量存到数据库中,写了红色部分的代码。
可是程序报错,提示错误 4 error C2111: “+”: 指针加法要求整型操作数
请问这个功能要怎么实现呢?能给出代码最好,谢谢各位了。

------解决方案--------------------------------------------------------
CString strSQL;

strSQL.Format( "INSERT INTO tb_tdatavalue(p_no, p_type, p_value_s, p_valse_x) VALUES ('a', 'Channel 1 Timewave Amplitude', '%f', '%f')", xreal[i], ximag[i] );
m_AdoConn.ExecuteSQL( (_bstr_t)strSQL );
  相关解决方案