2013-11-25 5 views
1

У меня есть линия, которая нанесена на другой график разброса. Эта линия время от времени меняет свою форму. Есть ли способ, с помощью которого я могу указать в своей программе, что данные для рисования этой строки являются динамическими, так что сюжет обновляется сам по себе при изменении данных?Matlab Ссылка данные для линейного графика на диаграмме рассеяния

Теперь то, что я делаю, снова рисует всю фигуру после каждого обновления данных. В программе очень много итераций (> 5000), и мне нужно визуализировать каждое изменение. Это означает, что цифру следует нарисовать 5000 раз. Это делает мою программу очень медленной. Есть ли другой лучший способ сделать это?

ответ

0

Чтобы автоматически обновить график при изменении исходной переменной, используйте linkdata function. В MathWorks есть great introduction page. Тем не менее, есть короткий пример в документации:

x = [1:20]; 
y = rand(20,3); 
area(x,y) 
linkdata on 

Затем вы можете изменить переменную и сюжет автоматически перерисовывает:

y(10,:) = 0; 

Автоматическое обновление.

Примечание: изменение источника на другую переменную - это совсем другое. Если YDataSource переназначено, то понадобится refreshdata, как указано Молли. В противном случае это будет поддерживать ваш график в актуальном состоянии при изменении переменной.

Одно предостережение описано на this page:

linkdata буферов обновления к данным и отправляет их участков примерно в полтора-секундные интервалы. Это делает привязку данных непригодной для плавного анимирования изменений значений данных, если они не обновляются в циклах, которые вынуждены выполнять два раза в секунду или меньше.

+0

Я пробовал это. и добавил рисунок фигуры на первой итерации. Но эта цифра не обновляется. Логика для рисования фигуры находится в другом файле matlab. Разве это имеет значение? Должен ли я указывать что-нибудь еще? – Doubting

+0

@Doubting Можете ли вы пояснить, как вы рисуете фигуру и какой код в каждом файле? Я думаю, вам нужно сделать сюжет с определенной переменной, а затем просто обновить эту переменную, а не строить новую переменную. ПРИМЕЧАНИЕ. Я думаю, что команда 'linkdata on' должна выполняться в _same workspace_, содержащей обновляемые переменные. – chappjc

+0

@Doubting Посмотрите [в этом разделе этой страницы] (http://www.mathworks.com/help/matlab/ref/linkdata.html?searchHighlight=linkdata#br65rof). Возможно, вам понадобится очень короткая задержка, например 'pause (0.1)' или, возможно, 'drawow', если ваши итерации будут слишком быстрыми. – chappjc

Смежные вопросы