解析问题Matricies在c++中墨西哥人文件

2视图(30天)
你好~ !
我想创建一个.mex64文件将在一个灰色的图像(或晚RGB)和其他一些参数,并计算和输出向量。
我坚持试图读取图像。我的输出为每个点总是0,不知道我做错了什么。
2013我用Matlab编译器从Visual Studio 2008。
这是我的代码:
无效mexFunction (int nlhs mxArray * plhs [], int nrhs, const mxArray * prhs [])
{
size_t m, n;
双* Img;
int残雪,cy, a, b,θ,numPoints;
/ *检查适当的数量的参数* /
如果(nrhs ! = 7) {
mexErrMsgIdAndTxt (“MATLAB: SampleEllipse: invalidNumInputs”,
“七输入参数必需的。”);
}其他的如果(nlhs > 1) {
mexErrMsgIdAndTxt (“MATLAB: SampleEllipse: maxlhs”,
“太多的输出参数。”);
}
m = mxGetM (prhs [5]);
n = mxGetN (prhs [5]);
残雪= mxGetScalar (prhs [0]);
cy = mxGetScalar (prhs [1]);
一个= mxGetScalar (prhs [2]);
b = mxGetScalar (prhs [3]);
θ= mxGetScalar (prhs [4]);
Img = mxGetPr (prhs [5]);
numPoints = mxGetScalar (prhs [6]);
printf (“% d % d % d % d % d % d | ptr: % u \ r \ n”残雪cy, a, b,θ,numPoints, Img);
(int i = 0;我< n;我+ +){
(int j = 0;j < m;j + +) {
printf (“(% d * % d) + % d = % d: % d \ n”,我,m, j,(我* m) + j, Img[(我* m) + j]);
}
}
}
在matlab,我叫它像(墨西哥人函数SampleEllipse):
testArray = [1 2 3;4 5 6;7 8 9];
SampleEllipse (1、2、3、4、5, testArray, 12)
并得到一个输出:
* 3][0 + 0 = 0:0
[0 * 3 + 1 = 1:0
[0 * 3]+ 2 = 2:0
(1 * 3)+ 0 = 3:0
(1 * 3)+ 1 = 4:0
(1 * 3)+ 2 = 5:0
(2 * 3)+ 0 = 6:0
(2 * 3)+ 1 = 7:0
(2 * 3)+ 2 = 8:0
这让我非常困惑和任何帮助将不胜感激!
谢谢!

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2014年2月4日
你打印出双浮点值使用整数格式% d。使用一个浮点格式而不是(% f % g)。例如,
printf (“(% d * % d) + % d = % d: % f \ n”,我,m, j,(我* m) + j, Img[(我* m) + j]);
1评论
约翰
约翰 2014年2月4日
哈哈哎!谢谢,我没有发生的错误(很明显,因为我不得不问…)。

登录置评。

更多的答案(0)

类别

找到更多的在从MATLAB调用c++帮助中心文件交换

社区寻宝

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

开始狩猎!