全栈工程师开发手册 (作者:栾鹏)
matlab2c动态链接库下载
matlab库函数大全
matlab2c基础教程
matlab2c开发全解教程
matlab2c调用方法:
1、下载动态链接库
2、将Matlab2c.dll拷贝到exe同目录下
3、将Matlab2c.h、Matlab2c.lib放到项目头文件目录下
4、在cpp文件中引入下面的代码
#include "Matlab2c.h"
#pragma comment(lib,"Matlab2c.lib")
using namespace Matlab2c;
matlab中deconv函数简介
1、deconv函数:
多项式求商
2、用法说明
格式 [q r] = deconv(v,u)%多项式v除以多项式u,返回商多项式q和余多项式r。
注意:v、u、q、r都是按降幂排列的多项式系数向量。
deconv的c++源码实现
多项式求商,a除以b
输入:两个多项式的系数a与b
输出:a除以b的商
Matrix Matlab2c::deconv(Matrix& a1,Matrix& b1)
{
Matrix p;
int i,j;
int lengtha,lengthb;
double *ma;
double *mb;
double *a; //清楚a1前面的0
double *b; //清除b1前面的零
for (i=0;i<a1.column;i++)
if ((a1.data[i])!=0)
break;
lengtha =a1.column-i;
a =new double[lengtha];
for (i=(a1.column-lengtha);i<a1.column;i++)
a[i-a1.column+lengtha] = a1.data[i];
for (i=0;i<b1.column;i++)
if ((b1.data[i])!=0)
break;
//b成为b1消除前面0后的多项式
lengthb=b1.column-i;
b=new double[lengthb];
for (i=(b1.column-lengthb);i<b1.column;i++)
b[i-b1.column+lengthb] = b1.data[i];
p=Matrix(1,lengtha+1-lengthb);
ma = new double[lengtha]; //储存循环被除数
mb = new double[lengtha]; //存储循环减去的值
for (i=0;i<lengtha;i++)
ma[i] =a[i];
for (i=0;i<p.column;i++)
{
p.data[i]=ma[i]/(b[0]);
for (j=0;j<lengthb;j++)
mb[j] =(p.data[i])*(b[j]);
for (j=i;j<(i+lengthb);j++)
ma[j]=ma[j]-mb[j-i];
}
delete[] a;
delete[] b;
delete[] ma;
delete[] mb;
return p;
}
deconv函数的使用测试
#include "Matlab2c.h"
#pragma comment(lib,"Matlab2c.lib")
using namespace Matlab2c;
int main()
{
double a[]={-2,1,0,-1,2};
double b[]={1,1,1};
Matrix aa=Matrix(1,5,a);
Matrix bb=Matrix(1,3,b);
Matrix cc=Matlab2c::deconv(aa,bb);
cout<<cc.toString()<<endl;
system("pause");
return 0;
}