马铃薯®稀疏阵列提供了具有大百分比零的双重或逻辑数据的高效存储。MATLAB稀疏阵列支持算术,逻辑和索引操金宝app作。有关更多信息,请参阅稀疏矩阵。
用matlab :: data :: ArrayFactory
创建一个Matlab :: data :: sparsearray
大批。将稀疏数组的数据写入缓冲区并使用这些缓冲区创建稀疏阵列。将稀疏数组传递给MATLABMatlabengine :: SetVariable.
。
#include“matlabdataArray.hpp”#include“matlabengine.hpp”void sparsearray(){使用命名空间matlab ::引擎;//连接到名为shared matlab会话,开始为:// matlab -r“matlab.eengine.shareengine('mymatlabengine')”字符串会话(U“mymatlabengine”);std :: unique_ptrmatlabptr = connectmatlab(会话);//定义稀疏阵列STD :: Vector Data = {3.5,12.98,21.76}的数据。STD :: Vector Rows = {0,0,1};STD :: Vector cols = {0,4,8};size_t nnz = 3;//为Data Matlab :: Data :: ArrayFactory Factory创建缓冲区;buffer_ptr_t data_p = factory.createbuffer (nnz);buffer_ptr_t rows_p = factory.createBuffer (nnz); buffer_ptr_t cols_p = factory.createBuffer (nnz); // Write data into the buffers double* dataPtr = data_p.get(); size_t* rowsPtr = rows_p.get(); size_t* colsPtr = cols_p.get(); std::for_each(data.begin(), data.end(), [&](const double& e) { *(dataPtr++) = e; }); std::for_each(rows.begin(), rows.end(), [&](const size_t& e) { *(rowsPtr++) = e; }); std::for_each(cols.begin(), cols.end(), [&](const size_t& e) { *(colsPtr++) = e; }); // Use the buffers to create the sparse array matlab::data::SparseArray arr = factory.createSparseArray ({ 2,9 }, nnz, std::move(data_p), std::move(rows_p), std::move(cols_p)); // Put the sparse array in the MATLAB workspace matlabPtr->setVariable(u"s", arr); }
matlab.谁是
命令显示传递给MATLAB工作区的数组是稀疏数组。
>>谁名字尺寸字节班级属性S.2x9.128.双倍的疏
有关如何设置和构建C ++引擎程序的信息,请参阅构建C ++引擎程序。
matlab :: data :: ArrayFactory
|Matlab :: Engine :: ConnectMatlab
|Matlab :: Engine :: Matlabengine