如何找到在墨西哥人c++ CellArray大小?

31日视图(30天)
安德鲁·罗兹
安德鲁·罗兹 2018年10月17日
我试图写一个c++程序在Matlab墨西哥人。我传递一个单元阵列需要找到的大小。这是一个叫做myMatlabFunction.cpp兆瓦
#包括“mex.hpp”
#包括“mexAdapter.hpp”
使用名称空间matlab:数据;
使用matlab:墨西哥人::ArgumentList;
MexFunction:公共matlab::墨西哥人:函数{
公众:
无效操作符()(ArgumentList输出,ArgumentList输入){
CellArraymyCell = std::移动(输入[0]);
/ /什么在这里找到细胞的数量吗?
输出[0]= myCell;
}
};
和相应的Matlab命令
%初始化细胞
mcell =细胞(3,1);
mcell {1} = 1 (1、3);
mcell {2, 1} = 1 (1、2);
mcell {3 1} = 1 (1、4);
%调用c++函数
= myMatlabFunction (mcell);
下面这个 matlab的url ,我移动输入单元阵列matlab::数据::CellArray。如果我写
matlab::数据::TypedArrayRef双> < ref myCell [0];
然后我可以访问所有元素的第一个细胞细胞数组。但我怎么发现细胞的数量?我难以确定文档如何找到大小。

答案(2)

强迫症
强迫症 2018年10月17日
单元阵列的大小,使用 mxGetM 的行数, mxGetN 列数,或 mxGetNumberOfElements 的元素数量。
mwSizeNRow = mxGetM (prhs [0]);
mwSizeNCol = mxGetN (prhs [0]);
mwSizeNElem = mxGetNumberOfElements (prhs [0]);
获得元素的数量在一个细胞数组元素,提取细胞元素的指针,然后使用相同的功能。
mxArray* pCell = mxGetCell (prhs [0], j);/ /获取指针j细胞数组的元素
mwSizeNumRow = mxGetM (pCell);
mwSizeNumCol = mxgetN (pCell);
mwSizeNumElem = mxGetNumberOfElements (pCell);
1评论
安德鲁·罗兹
安德鲁·罗兹 2018年10月18日
所有的功能在你的答案是c代码。我试图使用c++墨西哥人的应用程序 //www.tianjin-qmedu.com/help/matlab/cpp-mex-file-applications.html

登录置评。


陆妹妹江泽惠女士
陆妹妹江泽惠女士 2020年3月31日
编辑:陆妹妹江泽惠女士 2020年3月31日
根据这一 网站 有一个函数调用 getDimensions () matlab::数据::数组 可以返回输入matlab矩阵的大小在c++ API。
基本上,我所做的矩阵如下。不过,我还没试过在其他数据类型。但我认为MATLAB c++ API的数据API文档可能是有益的。
/ /这是输入矩阵
TypedArray <双>矩阵= std::移动(输入[0]);
/ /得到
std::向量<无符号长int > size_t = matrix.getDimensions ();
/ /我们可以片大小的向量
std:: cout < <" test_size = "< < std:: endl < < size_t [0] < < std:: endl;
std:: cout < <" test_size = "< < std:: endl < < size_t [1] < < std:: endl;
/ /得到这个尺寸向量的大小
std:: cout < <“规模大小= "< < std:: endl < < size_test.size () < < std:: endl;

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!