使用Matlab codegen在Matlab 2013中创建mex文件时出错

时间:2014-04-11 11:27:37

标签: matlab mex matlab-deployment matlab-coder

我有一个名为test(test.m)的函数,我想在Matlab 2013b中使用codegen将其转换为mex文件。 这里B是包含零矩阵p_z(大小128 * 128)的结构,并且plastset是空矩阵(0 * 0)。 转换以下代码时出错: 除非'行'如果指定,则输入必须是向量。对于可变大小的输入,对于该行,第一维或第二维必须具有恒定长度1 ' actset = setxor(actset,plastset);'在下面提到的代码中

请帮我纠正在mex文件中成功创建以下功能的代码。

function [] = test(B)

p_z = B.p_z;

plastset = B.plastset;

if isempty(B.plastset)
     plastset = zeros(1,0);
end


if isempty(find( p_z > 0, 1 ))
     actset = zeros(1,0);
else
     actset = find( p_z > 0 );
     actset = setxor ( actset , plastset );
end

1 个答案:

答案 0 :(得分:1)

从错误消息看起来,setxor不支持您调用它的方式。如果你想使用plastset对actset中的所有元素执行setxor,请尝试使用冒号操作将它们作为向量。

actset = setxor(actset(:), plastset(:));