我有一个名为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
答案 0 :(得分:1)
从错误消息看起来,setxor不支持您调用它的方式。如果你想使用plastset对actset中的所有元素执行setxor,请尝试使用冒号操作将它们作为向量。
actset = setxor(actset(:), plastset(:));