您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 第21章ARM官方DSP库的InterpolationFunctions的使用
安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第11页页共共1100页页第第2211章章IInntteerrppoollaattiioonnFFuunnccttiioonnss的的使使用用本期教程主要讲解一维数据的线性插值和二维数据的双线性插值。21.1线性插补LinearInterpolation21.2双线性插补BilinearInterpolation21.3总结2211..11线线性性插插值值LLiinneeaarrIInntteerrppoollaattiioonn2211..11..11aarrmm__lliinneeaarr__iinntteerrpp__ff3322公式描述:直线插补曲线可以通过线性多项式进行拟合。线性内插的工作原理有效地绘制两个相邻样本之间的直线和沿该线再返回相应的插补点。如上图所示,确定了输入参数x在样本数据中的位置后,就可以绘制这两个样本值之间的直线。然后返回X值对应的Y值。返回方法就是下面的直线公式:y=y0+(x-x0)*((y1-y0)/(x1-x0))其中x0和x1是输入值x最近的两个数据,y0和y1是输出值y最近的两个值。函数定义如下:安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第22页页共共1100页页static__INLINEfloat32_tarm_linear_interp_f32(arm_linear_interp_instance_f32*S,float32_tx)参数定义:[in,out]*Sisaninstanceofthefloating-pointLinearInterpolationstructure[in]xinputsampletoprocessreturnyprocessedoutputsample.注意事项:1.结构arm_linear_interp_instance_f32的定义如下(在文件arm_math.h文件):typedefstruct{uint32_tnValues;/**nValues*/float32_tx1;/**x1*/float32_txSpacing;/**xSpacing*/float32_t*pYData;/**pointertothetableofYvalues*/}arm_linear_interp_instance_f32;2.如果输入参数x在输入范围之下返回第一个样本值,如果相爱输入范围之上,返回最后一个样本值。2211..11..22aarrmm__lliinneeaarr__iinntteerrpp__qq3311函数定义如下:static__INLINEq31_tarm_linear_interp_q31(q31_t*pYData,q31_tx,uint32_tnValues)参数定义:[in]*pYDatapointertoQ31LinearInterpolationtable[in]xinputsampletoprocess[in]nValuesnumberoftablevaluesreturnyprocessedoutputsample.注意事项:1.结构arm_linear_interp_instance_q31的定义如下(在文件arm_math.h文件):typedefstruct{uint16_tnumRows;/**numberofrowsinthedatatable.*/安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第33页页共共1100页页uint16_tnumCols;/**numberofcolumnsinthedatatable.*/q31_t*pData;/**pointstothedatatable.*/}arm_bilinear_interp_instance_q31;2.如果输入参数x在输入范围之下返回第一个样本值,如果相爱输入范围之上,返回最后一个样本值。3.输入参数x的数据格式是12.20。这样32位数据的12位整数部分用于样本数据的检测,所以最大值就是2的12次方。后20位用于小数部分。2211..11..33aarrmm__lliinneeaarr__iinntteerrpp__qq1155函数定义如下:static__INLINEq15_tarm_linear_interp_q15(q15_t*pYData,q31_tx,uint32_tnValues)参数定义:[in]*pYDatapointertoQ15LinearInterpolationtable[in]xinputsampletoprocess[in]nValuesnumberoftablevaluesreturnyprocessedoutputsample.注意事项:1.结构arm_linear_interp_instance_q15的定义如下(在文件arm_math.h文件):typedefstruct{uint16_tnumRows;/**numberofrowsinthedatatable.*/uint16_tnumCols;/**numberofcolumnsinthedatatable.*/q15_t*pData;/**pointstothedatatable.*/}arm_bilinear_interp_instance_q15;2.如果输入参数x在输入范围之下返回第一个样本值,如果相爱输入范围之上,返回最后一个样本值。3.输入参数x的数据格式是12.20。这样32位数据的12位整数部分用于样本数据的检测,所以最大值就是2的12次方。后20位用于小数部分。2211..11..44aarrmm__lliinneeaarr__iinntteerrpp__qq77函数定义如下:安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第44页页共共1100页页static__INLINEq7_tarm_linear_interp_q7(q7_t*pYData,q31_tx,uint32_tnValues)参数定义:[in]*pYDatapointertoQ7LinearInterpolationtable[in]xinputsampletoprocess[in]nValuesnumberoftablevaluesreturnyprocessedoutputsample.注意事项:1.结构arm_linear_interp_instance_q7的定义如下(在文件arm_math.h文件):typedefstruct{uint16_tnumRows;/**numberofrowsinthedatatable.*/uint16_tnumCols;/**numberofcolumnsinthedatatable.*/q7_t*pData;/**pointstothedatatable.*/}arm_bilinear_interp_instance_q7;2.如果输入参数x在输入范围之下返回第一个样本值,如果相爱输入范围之上,返回最后一个样本值。3.输入参数x的数据格式是12.20。这样32位数据的12位整数部分用于样本数据的检测,所以最大值就是2的12次方。后20位用于小数部分。2211..11..55实实例例讲讲解解实验目的:1.学习InterpolationFunctions中线性插补的实现实验内容:1.按下按键K1,串口打印函数DSP_MatLinearInterpolation的输出结果实验现象:通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:安安富富莱莱UUMM440033DDSSPP教教程程SSTTMM3322--VV55开开发发板板系系统统篇篇手手册册22001155年年0011月月1155日日版版本本::11..00第第55页页共共1100页页程序设计:/*----------------------------------------------------------------------(1)*TestinputdataforF32SINfunction*GeneratedbytheMATLABrand()function*randn('state',0)*xi=(((1/4.18318581819710)*randn(blockSize,1)*2*pi));*--------------------------------------------------------------------*/float32_ttestInputSin_f32[TEST_LENGTH_SAMPLES]={-0.649716504673081170,-2.501723745497831200,0.188250329003310100,0.432092748487532540,-1.722010988459680800,1.788766476323060600,1.786136060975809500,-0.056525543169408797,0.491596272728153760,0.262309671126153390};/*------------------------------------------------------------------------------*ReferenceoutofSINF32functionforBlockSize=10*Calculatedfromsin(testInputSin_f32)*------------------------------------------------------------------------------*/float32_ttestRefSinOutput32_f32[TEST_LENGTH_SAMPLES]={-0.604960695383043530,-0.597090287967934840,0.187140422442966500,0.418772124875992690,-0.988588831792106880,0.976338412038794010,0.976903856413481100,-0.056495446835214236,0.472033731854734240,0.259311907228582830};/*------------------------------------------------------------------------------*Method1:TestoutBufferCalculatedfromCubicInterpolation(2)*------------------------------------------------------------------------------*/float32_ttestOutput[TEST_LENGTH_SAMPLES];/*------------------------------------------------------------------------------*Method2:TestoutbufferCalculatedfromLinearI
本文标题:第21章ARM官方DSP库的InterpolationFunctions的使用
链接地址:https://www.777doc.com/doc-5072003 .html