2017-10-06 8 views
1

私は最終的に正弦関数(または他の関数)の動いているカラープロットであるmain関数によって呼び出される3つの関数を持っています。主な機能は、タイマーオブジェクトを介してこれを行います。関数をプロットする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 

私は間違って何をしていますか?

+0

実行されていないことをどのように知っていますか?あなたのコードに基づいて、「myMat_new」は常に同じ出力を返しますので、「新しい」画像データは「古い」画像データと同じに見えます。 – Suever

+0

したがって、グラフは更新されるカラーマッピングされた正弦波を表示する必要がありますプログラムはループを終了します。私は "動いている"グラフを見ていないので、コードが機能しないと言うことができます。 –

+0

あなたはデータを更新していません。毎回同じデータに置き換えようとしています – Suever

答えて

0

あなたはこのコード行が有効であるように、「objのが作成され、あなたのタイマーを実行している:

imgh = get(obj,'UserData'); 

が、私はimghはプロパティ「のCData」を持っていることを示す任意の部分が表示されません。あなたのコードのimghは、グラフィックオブジェクトではなくタイマーオブジェクトです。

+0

"window_timer"関数の2行目は、imghに 'CData'プロパティがあることを示しています。 –