mwArray的get函数用法

mwArray的get函数用法

1、应用:
在matlab与C++混合编程中:
使用get函数将mwArray类型的数组中的数据存入vector<vector<double>> v中:

mwArray a(col, row, mxDOUBLE_CLASS, mxREAL);//列优先,先列后行: 构建一个 col列 X row行 的matlab矩阵
a.Get(1, index);// 按matlab存储方式(列优先存储,首元素下标为1)取第index个元素
a.Get(index, index);//等同于a.Get(1, index); 第一个参数不知道是什么意思...
a.Get(1, col, row);// a.Get(未知,列,行)

2、代码如下:

#include <iostream>
#include "mclmcr.h"
#include "matrix.h"
#include "mclcppclass.h"
#include<vector>
using namespace std;

int main(){
	double data[] = { 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112 };
	int len = sizeof(data) / sizeof(data[0]);
	int col = 3;
	int row = len / col;

	mwArray a(col, row, mxDOUBLE_CLASS, mxREAL);//列优先,先列后行: 构建一个 col列 X row行 的matlab矩阵

	a.SetData(data, len);
	
	vector<vector<double>> v;
	v.resize(row);
	for (int i = 0; i < row; i++){
		for (int j = 1; j <= col; j++){
			v[i].push_back(a.Get(1, i*col + j));
	//		v[i].push_back(a.Get(i*col + j, i*col + j));//上下两行的效果一致!!不知道第一个参数是什么意思??
		}
	}

	for (auto row : v){
		for (auto col : row){
			cout << col << "\t";
		}
		cout << endl;
	}
	cout << endl;

	vector<vector<double>> v1;
	v1.resize(row);
	for (int i = 0; i < row; i++){
		for (int j = 1; j <= col; j++){// j表示:a的第j列元素
			v1[i].push_back(a.Get(1, j, i + 1));// a.Get(未知,列,行)
		}
	}

	for (auto row : v1){
		for (auto col : row){
			cout << col << "\t";
		}
		cout << endl;
	}
	cout << endl;

	double x;
	x = a.Get(3, 2, 4); // x = 111
	cout << x << endl;

	x = a.Get(1, 1, 4); // x = 110
	cout << x << endl;

	x = a.Get(1, 3, 4); // x = 112 // a.Get(未知,列,行)
	cout << x << endl;
	
	return 0;
}

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值