Matlab定时器函数绘制一个函数
问题描述:
我有三个函数依次被主函数调用,其中最终结果是一个正弦(或任何其他)函数的移动颜色图。主函数通过一个计时器对象来完成。Matlab定时器函数绘制一个函数
我能够创建一个静态图,但不能根据我的计时器对象中提供的值更新它。
我得到以下错误消息:
错误而定时器“定时器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”所以这行代码是有效的:
imgh = get(obj,'UserData');
,但我没有看到任何部分显示出IMGH有一个属性“CData的”。在你的代码中的imgh是一个计时器对象,而不是一个图形对象。
+0
“window_timer”函数的第二行显示,imgh具有“CData”属性。 –
你怎么知道它没有运行。根据您的代码,“新”图像数据将看起来与“旧”图像数据相同,因为“myMat_new”总是返回相同的输出 – Suever
因此,想法是该图应显示更新的彩色映射正弦波,直到该程序退出循环。由于我没有看到“移动”图,我可以说代码不起作用。 –
虽然您并未更新数据。您每次只需更换相同的数据 – Suever