全栈工程师开发手册 (作者:栾鹏)
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中perms函数简介
1、perms函数:产生所有可能的排列
2、用法说明
P = perms(v),这里v是一个长度为n的行向量,此函数产生v中这n个元素的全排列矩阵,每行为一个排列。矩阵P包含有n!行和n列。
perms的c++源码实现
矩阵所有元素的全排列主函数,不区分相同元素,只记录位置
输入:需要排序的列向量或者行向量
输出:向量元素的全排列
提示:函数不区分相同元素。函数不改变原函数数据。 N!行、 N列
int nowcan;
Matrix nowzhen;
//向量全排列子函数
void perm(double* data, int n, int curr)
{
int i;
double t;
if (curr==n-1)
{
for (i= 0; i < n; ++i)
*(nowzhen.data+nowzhen.column*nowcan+i) = data[i];
nowcan++;
}
else
{
for (i = curr; i < n; ++i)
{
t = data[curr], data[curr] = data[i], data[i] = t;
perm(data, n, curr+1);
t = data[curr], data[curr] = data[i], data[i] = t;
}
}
}
Matrix Matlab2c::perms(Matrix& a)
{
nowcan =0;
nowzhen.row =Matlab2c::factorial(a.row*a.column);
nowzhen.column = a.column*a.row;
nowzhen.data = new double[nowzhen.row*nowzhen.column];
perm(a.data, a.column*a.row, 0);
return nowzhen;
}
perms函数的使用测试
#include "Matlab2c.h"
#pragma comment(lib,"Matlab2c.lib")
using namespace Matlab2c;
int main()
{
double a[]={1,2,3,4};
Matrix aa=Matrix(1,4,a);
Matrix bb=Matlab2c::perms(aa);
cout<<bb.toString()<<endl;
system("pause");
return 0;
}