Создание и сохранение в виде файла в MATLAB - PullRequest
9 голосов
/ 01 октября 2011

Мне нужно построить и сохранить в файл изображения в MATLAB. Вот код, который я вызываю внутри цикла for:

figure
scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
% need to save this plot to image to a file here

Теперь это стартовый код, который я использую для какой-то работы, и я не совсем его понимаю (пример - команда 'figure'). Были предложения использовать saveas или print , но я считаю, что мне нужны ручки для них. Может ли кто-нибудь помочь мне здесь?

Спасибо.

Ответы [ 2 ]

15 голосов
/ 01 октября 2011

figure() - это функция, которая возвращает дескриптор рисунка:

f = figure()
scatter(data_x_pos,data_y_pos,'r*')
...

Затем вы можете использовать эту ручку для сохранения фигуры:

saveas(f, 'image.png');

Чтобы узнать больше, ознакомьтесь с руководствами по Handle Graphics .

scatter и plot также возвращают маркеры для набора точек, или линий, или чего-либо еще, что они построили.

4 голосов
/ 24 января 2015

Альтернативное решение, которое может помочь некоторым, состоит в том, чтобы воспользоваться тем фактом, что Matlab обновляет переменную с именем gcf «получить маркеры текущей фигуры» каждый раз, когда создается фигура. Даже если дескриптор явно не создан с помощью команды объявления дескриптора f = figure();, вы все равно можете использовать такие команды, как print() и saveas(), вызвав переменную дескриптора gcf. Например, этот блок кода может также работать для тех, кто не требует от ОП работы в большом цикле for с уникально идентифицированными цифрами:

scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
hold off;
saveas(gcf,'filename','png')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...