2013-04-24 2 views
1

Simulink에서 Matlab 함수를 작성하려고했습니다. 이 같은 나의 첫번째 FUNC가 :Matlab이 Simulink 블록으로 작동합니다.

function y = fcn(u, v) 
coder.extrinsic('detectSURFFeatures'); 
boxPoints = detectSURFFeatures(u); 
%scenePoints = detectSURFFeatures(v); 
vBoxPoints = boxPoints.selectStrongest(100); 
y = 0; 
y = vBoxPoints; 

는하지만 오류를 참조하십시오 'mxArray'에서 필드를 'selectStrongest'추출 1. 시도합니다. 2. 정의되지 않은 함수 또는 변수 'vBoxPoints'. 지역 변수에 대한 첫 번째 할당은 해당 클래스를 결정합니다. 3. 포트 너비 또는 치수 오류. 'detect_cross/MATLAB Function/v'의 출력 포트 1은 [400x239] 매트릭스입니다. Pls, help.

답변

4

외부 함수에서 반환 된 데이터는 mxArray 유형입니다. 이러한 mxArray에서 값을 가져 오려면 외래 함수의 결과를 해당 유형으로 자동 변환 할 수 있도록 미리 선언해야합니다. detectSUTFFeatures를 호출하기 전에

과 같은 것을 사용할 수 있습니다. mxArray가 함수의 mxArray와 일치하지 않으면 런타임 오류가 발생합니다. 오류 2와 3은 첫 번째 문제 때문입니다.

+0

안녕하세요. 좋아요. 시도해 보겠습니다. 'function y = fcn (u) coder.extrinsic ('detectSURFFeatures ','rgb2gray '); boxPoints = struct ('selectStrongest', 0 (100,1)); img = 0 (150, 200, 'uint8'); img (:) = rgb2gray (u); boxPoints = detectSURFFeatures (img); y = 0 (100, 1); y = boxPoints.selectStrongest (100); ' 하지만 작동하지 않았습니다. –

+0

구조체를 만드는 줄을 예제로 들었습니다. 구조체와 일치하는 방식으로 만들어야합니다. "효과가 없다"는 것은 무엇을 의미합니까? – Navan

+0

나에게 오류가 발생했습니다 : MATLAB 표현식 'detectSURFFeatures'이 (가) 올바른 클래스가 아닙니다. 'struct'가 필요합니다. 'SURFPoints'가 발견되었습니다. 블록 MATLAB 함수 (# 25) 실행 중 : none –