2014-04-11 80 views
0

我有一個名爲test(test.m)的函數,我想在Matlab 2013b中使用codegen將其轉換爲mex文件。 這裏B是一個包含零矩陣p_z(大小128 * 128)和plastset是空矩陣(0 * 0)的結構。 我得到一個錯誤轉換下面的代碼: 除非'行'被指定,輸入必須是矢量。對於可變大小的輸入,對於行 'actset = setxor(actset,plastset);'第一維或第二維必須具有恆定的長度1'在下面提到的代碼Error在Matlab 2013中使用Matlab codegen創建mex文件

請幫我糾正成功創建下面的函數成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

我缺少codegen,但文檔提示您必須通過-args開關指定參數的類型。 [http://www.mathworks.de/matlabcentral/answers/19303-what-does-this-error-message-mean-no-class-precondition-specified-for-input-x-of-function-squa]( mathworks支持線程)。 – Trilarion

回答

1

從錯誤消息看來,它看起來像setxor不支持您調用它的方式的矩陣。如果你想用plastset爲actset中的所有元素設置setxor,請嘗試使用冒號操作將它們作爲矢量。

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

謝謝我會試試這個ñ讓你知道 – coolcrasher

+0

其不工作..........你可以建議我別的東西 – coolcrasher