【问题标题】:Matlab Timer function to plot a functionMatlab Timer 函数绘制函数
【发布时间】: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


【解决方案1】:

当您运行计时器时,会创建“obj”,因此这行代码是有效的:

imgh = get(obj,'UserData');

但我没有看到任何部分显示 imgh 具有属性“CData”。代码中的 imgh 是计时器对象,而不是图形对象。

【讨论】:

  • "window_timer"函数的第二行显示imgh有'CData'属性。
猜你喜欢
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多