Matlab: быстрый захват изображения путем копирования резервного хранилища/обратного буфера?

Я использую версию R2007a.

Сначала небольшая предыстория: я создаю инструмент, который накапливает точечный график из данных, полученных в режиме реального времени. Когда количество точек становится достаточно большим, обновление графики не успевает за поступающими данными, поэтому я использую 'painters' с 'EraseMode', установленным на 'none', и просто выполняю set(obj,'xdata',...,'ydata',...) для обновления положения точки графика. Это работает очень хорошо.

Кстати, я обнаружил приятный трюк: включив двойную буферизацию, MATLAB всегда имеет копию изображения в памяти, поэтому точки накапливаются в изображении, даже когда окно скрыто или свернуто!

Теперь я хотел бы захватить каждое изображение, чтобы создать фильм. Я видел множество решений с использованием getframe(), addframe() и недокументированного hardcopy(). Все они перерисовывают фигуру, и старые точки теряются, но на самом деле это то, что я могу обойти при постобработке. Моя проблема в том, что эти функции слишком медленные для скорости сбора данных. С тик / так, я нахожу

tic, getframe(h); toc - 0.13 sec
tic, addframe(h); toc - 0.15 sec
tic, hardcopy(h,'-Dpainters','r0'); toc - 0.07 sec

Я вижу, что hardcopy() делает что-то другое с 'renderer', установленным в 'painters', но даже если бы я мог узнать, как использовать его вывод, он все равно слишком медленный.

Но при включенной двойной буферизации изображение уже находится в резервном хранилище/заднем буфере. Сделать копию этого было бы довольно быстро. Могут ли какие-нибудь хакеры выяснить, как получить указатель на резервное хранилище и сделать его копию?

Спасибо


person user2444695    schedule 02.06.2013    source источник
comment
Почему бы вам просто не сохранить входящие данные в реальном времени в файл, воспроизвести их позже (зарисовать каждый кадр) и сделать из этого видео, а не пытаться создать видео в реальном времени?   -  person wakjah    schedule 02.06.2013
comment
Кроме того, вы можете найти этот вопрос интересным, поскольку он метод прямого доступа к пикселям фигуры при использовании средства визуализации OpenGL.   -  person wakjah    schedule 02.06.2013
comment
У меня аналогичный вопрос: stackoverflow.com/questions/30071607/ Что вы подразумеваете под включением двойной буферизации?   -  person Uri Cohen    schedule 06.05.2015
comment
Кажется, что печатная копия (и все другие методы) перерисовывают фигуру.   -  person Uri Cohen    schedule 06.05.2015