0

我有一个名为 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
4

1 回答 1

1

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

actset = setxor(actset(:), plastset(:));
于 2014-04-11T13:46:43.083 回答