Matlab代码生成-rceps倒频谱
背景Matlab 版本 :R2021a
目标语言 : C++
生成方式:类方法(Method)
命令行窗口输入 coder
选择需要生成代码的 m文件
定义参数的输入类型。此处定义类型的方式为调用目标函数,matlab会自动确定类型。
需要注意的是:需要希望输入一个可变数组,需要把大小改为 1xinf
检查是否能正常生成 /Check for Run-Time Issues
代码生成
这里的接口方式可以选择 Method,即作为C++的类的方法来调用。
在C++中调用
在生成的 MLabRceps.h 文件中,可以发现函数的定义如下。class MLabRceps { public: MLabRceps(); ~MLabRceps(); void rceps(const coder::array<double, 2U> &x, coder::array<double, 2U> &xhat, coder::array<double, 2U> &yhat); }; 1234567
在Qt中调用此函数的一个例子如下:
void MLabInterface::IFMLabRceps(QVector<double> &signal, QVector<double> &y) { coder::array<double, 2U> x; coder::array<double, 2U> xhat; coder::array<double, 2U> yhat; // x是一个行向量 1行 n 列 // 赋值 x.set_size(0,1); x.set_size(1,signal.size()); for(int i=0;i<signal.size();i++) { x[i]=signal[i]; } rcepsobj->rceps(x,xhat,yhat); int row= xhat.size(0);//1 int col= xhat.size(1); //1000 //rceps row 1 col 1000: for(int i=0;i<col;i++) { y.append(xhat.at(0,i)); } }
123456789101112131415161718192021222324252627