【发布时间】:2018-03-18 05:00:19
【问题描述】:
我有三个函数,它们依次由主函数调用,最终结果是正弦(或任何其他)函数的移动彩色图。主函数通过一个计时器对象来完成这项工作。
我可以创建静态图,但无法根据计时器对象中提供的值对其进行更新。
我收到以下错误消息:
为计时器“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
我做错了什么?
【问题讨论】:
-
你怎么知道它没有运行。根据您的代码,“新”图像数据看起来与“旧”图像数据相同,因为
myMat_new始终返回相同的输出 -
所以想法是图形应该显示一个更新的颜色映射正弦波,直到程序退出循环。由于我没有看到“移动”图,我可以说代码不起作用。
-
你没有更新数据。您只是每次都替换为相同的数据
标签: matlab plot timer visualization