J'ai trois fonctions qui sont à leur tour appelées par la fonction principale où le résultat final est un tracé de couleurs en mouvement d'une fonction sinus (ou autre). La fonction principale le fait via un objet timer.Fonction Matlab Timer pour tracer une fonction
Je suis capable de créer un tracé statique mais je n'arrive pas à le mettre à jour en fonction de la valeur fournie dans mon objet temporisateur.
Je reçois le message d'erreur suivant:
Erreur lors de l'évaluation TimerFcn pour timer 'minuterie 19'
objet non valide ou supprimé.
Le code de la fenêtre principale est la suivante:
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)
code de la fonction appelée par la fonction de minuterie:
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
Enfin, la fonction de remplacement des valeurs de la matrice aléatoire avec la fonction sinusoïdale
function [ myMat ] = myMat_new(myMat)
x = -pi:1/10:pi;
myMat = sin(x);
end
Qu'est-ce que je fais de mal?
Comment savez-vous qu'il ne fonctionne pas? Basé sur votre code, les "nouvelles" données d'image vont ressembler aux "vieilles" données d'image parce que "myMat_new" retourne toujours la même sortie – Suever
Donc l'idée est que le graphique devrait afficher une onde sinusoïdale mappée en couleur de mise à jour jusqu'à le programme quitte la boucle. Comme je ne vois pas le graphique "en mouvement", je peux dire que le code ne fonctionne pas. –
Vous n'êtes pas en train de mettre à jour les données. Vous remplacez simplement par les mêmes données à chaque fois – Suever