2017-04-27 11 views
-1

Matlab Simulink에서 볼과 플레이트 작업을하고 있습니다. 나는 Matlab 파일을 추적하는 공이있다. Simulink에서 어떻게 실행할 수 있습니까? 나는 공 추적 Matlab 파일에서 위치 데이터를 원한다. 사용자 정의 함수에서 함수를 시도했지만 videoinput 오류로 인해 코드가 작동하지 않습니다. 어떻게해야합니까?Simulink에 m 파일 임베드

+1

당신의 노력을 보여주십시오. 지금까지 뭐 했니? 정확히 어디에서 오류가 발생 했습니까? 어쩌면 여기 사람들이 당신을 도울 수 있도록 코드를 게시하십시오. –

+0

추적 코드를 추가 했으므로 첫 번째 항목에 대해 – KralBey

답변

0
vid = videoinput('winvideo', 1); 
set(vid, 'FramesPerTrigger', Inf); 
set(vid, 'ReturnedColorspace', 'rgb'); 
vid.FrameGrabInterval = 4; 

start(vid); 

while (vid.FramesAcquired<=1000) 

    data = getsnapshot(vid); 

    diff_im=rgb2gray(data); 
    diff_im = im2bw(diff_im,0.9); 
    diff_im = bwareaopen(diff_im,300); 
    bw = bwlabel(diff_im, 8); 
    stats = regionprops(bw, 'BoundingBox', 'Centroid'); 

    imshow(data); 
    hold on 
    for object = 1:length(stats) 
     bb = stats(object).BoundingBox; 
     bc = stats(object).Centroid; 
     rectangle('Position',bb,'EdgeColor','r','LineWidth',2); 
     plot(bc(1),bc(2), '-m+')    
     a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2))))); 

     set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow'); 

    end 

    hold off 
end 
stop(vid); 
flushdata(vid); 

clear all 

여기에 추적 코드가 있습니다. 나는 bc (1)과 bc (2)를 Simulink에 위치 시키려고하지만이 코드를 simulink에 임베드 할 수 없다.

0

시뮬 링크 (임베디드) 코더를위한 코드는 코드가 생성 될 수있는 성격을 가져야합니다. 즉, Matlab 함수의 하위 집합 만 지원됩니다. 코드 생성 지원 될 전형적 코드는 "래그"

% # 1 CODEGEN 함수 정의 내부

있어야한다.

A)이 모델에서 코드를 생성하려면 : 당신은 % 번호의 CODEGEN에 대한 잘못된 태그되지 않은 코드의 기능을 다시 작성할 필요

해야 할 일

당신의 목표에 따라 달라집니다 . (일부 작업은 포함 - 죄송합니다 ...)

B) 그냥 시뮬에서 실행하려면 :

coder.extrinsic 메커니즘을 사용합니다. 이것은 MATLAB 함수 (블록) 코드 안에 넣고 codegen 사양을 벗어나는 MATLAB 함수를 사용한다고 simulink에 지시하는 지시문 일뿐입니다. 작업을 마친 후에는 정상적인 함수를 호출 할 수 있습니다 (함수 m- 파일에 넣으십시오). 그러나 코드를 생성하려고하면; 특정 함수 호출은 무시됩니다. 나머지 코드는 최선의 노력으로 실행하려고 시도합니다.

최종 메모; 언젠가 simulink에서 matlab 함수 블록에 호출하거나 포함시키려는 함수를 개발 (명령 프롬프트)하고 있다면 코드 생성에 사용할 수없는 함수를 피할 수 있도록 % # codegen pragma를 넣어야합니다.

+0

답변 해 주셔서 감사합니다. – KralBey