2017-10-06 2 views
1

나는 최종 결과가 사인 함수 (또는 다른 함수)의 움직이는 컬러 플롯 인 main 함수에 의해 차례로 호출되는 세 개의 함수가 있습니다. main 함수는 타이머 객체를 통해이를 수행합니다.함수를 플롯하는 Matlab Timer 함수

정적 플롯을 만들 수 있지만 내 타이머 개체에 제공된 값을 기반으로 업데이트 할 수 없습니다. 타이머 '타이머 19'
잘못되었거나 삭제 된 개체에 대한 TimerFcn을 평가하는 동안

오류 :

나는 다음과 같은 오류 메시지가 나타납니다.

clc; clear all; close all;  
rows = 1; 
cols = 30;  
t = timer('StartDelay', 0.05, 'Period', 0.05, 'TasksToExecute', 1000, ... 
      'ExecutionMode', 'fixedRate'); 
t.StartFcn = {@window, rows, cols}; 
t.TimerFcn = {@window_timer}; 
t.StopFcn = @(x,y)disp('end');  
start(t) 

코드 타이머 기능에 의해 호출 된 함수 : 다음

메인 윈도우에 대한 코드는 마지막

function window_timer(obj, event) 
    imgh = get(obj,'UserData'); 
    myMat = get(imgh,'CData'); 

    myMat = myMat_new(myMat); 

    set(imgh,'CData',myMat); 
    drawnow; 
    pause(0.02); 
    set(obj,'UserData',imgh); 
end 

과 랜덤 행렬 값을 대체하는 기능 사인 함수

function [ myMat ] = myMat_new(myMat)  
    x = -pi:1/10:pi; 
    myMat = sin(x);   
end 

내가 뭘 잘못 했니? 당신은 'OBJ가'생성하여 타이머를 실행하는 경우

+0

실행되지 않는 것을 어떻게 알 수 있습니까? "myMat_new"는 항상 동일한 출력을 반환하기 때문에 코드에서 "new"이미지 데이터는 "old"이미지 데이터와 동일하게 보일 것입니다. – Suever

+0

그래서 그래프는 사인파가 업데이트 될 때까지 컬러 맵핑을 표시해야합니다. 프로그램은 루프를 종료합니다. "움직이는"그래프가 보이지 않기 때문에 코드가 작동하지 않는다고 말할 수 있습니다. –

+0

데이터를 업데이트하지 않습니다. 매번 동일한 데이터로 바꾸는 것입니다. – Suever

답변

0

그래서 코드 줄은 유효합니다

imgh = get(obj,'UserData'); 

하지만 일부가 imgh이 속성 '하려면 CData'을 가지고 있음을 보여주는 표시되지 않습니다. 당신의 코드에서 imgh는 타이머 객체이고 그래픽 객체는 아닙니다.

+0

"window_timer"함수의 두 번째 줄은 imgh에 'CData'속성이 있음을 보여줍니다. –