1. 数组的赋初值
double array[5]=0;// 编译报错,应加花括号
double array[5]={0};
2. 数组的声明
void allpass(double,double,double,double[]); // 函数的形参若为数组,需要加[];
void allpass(double fs,double f0,double q,double out1[])
{}
3. Mingw 安装
matlab生成c++ vst,提示找不到编译器,所以彻底学习一遍如何安装和配置。(0911)
- 发现已安装的codeblock中已带有Mingw(C:\Program Files (x86)\CodeBlocks\MinGW)
4 浮点数取整产生的误差
cout<<(pow(10,2))<<' '<<int(pow(10,2))<<' '<<100.00000001<<' '<<int(100.00000001);
运行的结果为
cout<<(pow(10,2))<<' '<<int(pow(10,2)+.00000001)<<' '<<100.00000001<<' '<<int(100.00000001);
运行的结果为
5 数据导出txt文件
/
ofstream wt;
wt.open("xn_no1.txt");
for(int i=0;i<fs;++i)
{
wt<< xn[i] << endl;
};
wt.close();
6 指针与二维数组
int a[][2]={1,2,3,4,5,6};
int (*p)[2] =a; //!!! 数组名a表示 &a[0],是一个2元行向量; *p必须加圆括号;
7.vb
LR滤波器的滤波函数错误
double filter_fo_lr(double sample,LR_coeffs l_coef,double *buf)
// iir,差分方程求y[n],低通和高通 LR滤波器均采用此函数。
// buf为8个元素的double数组,x1-x4,y1-y4
{
double xn = sample;
double yn = l_coef.b0*xn + l_coef.b1*buf[0] + l_coef.b2*buf[1]+l_coef.b3*buf[2]+l_coef.b4*buf[3]
- l_coef.a1*buf[4] - l_coef.a2*buf[5]+l_coef.a3*buf[6]+l_coef.a4*buf[7];
粗心,llr滤波器yn=bnxn - 所有的(anyn),y[n-k]的符号都是-号。而自己将[6] /[7]项写成了加号。导致滤波器的值无限大。
8.打印时间
#include <time.h>
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime ( &rawtime );
printf("%s \n",asctime(timeinfo) );