2014-04-11 3 views
0

matlab 2013b에서 codegen을 사용하여 mex 파일로 변환하려는 test (test.m)라는 함수가 있습니다. 여기에서 B는 제로 행렬 p_z (크기 128 * 128)를 포함하는 구조이고 plastset은 빈 행렬 (0 * 0)입니다. 다음 코드를 변환하는 중 오류가 발생합니다. 'rows'가 지정되지 않은 한 입력은 벡터 여야합니다. 가변 크기 입력의 경우 첫 번째 또는 두 번째 차원의 길이는 일정한 길이 여야합니다. 'actset = setxor (actset, plastset); 아래 코드에서Error Matlab codegen을 사용하여 Matlab 2013에서 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

고마워요. 이걸 n 시험해보아야합니다. – coolcrasher

+0

그게 작동하지 않습니다 .......... 제게 다른 것을 제안 해 줄 수 있어요. – coolcrasher