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



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

请帮助我更正成功将以下函数创建到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

从错误消息来看,setxor似乎不支持矩阵的调用方式。如果你想用plasset为actset中的所有元素执行setxor,请尝试使用冒号运算将它们作为向量。

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

最新更新