Сгенерируйте презентацию из результатов приложения MATLAB

В этом примере показано, как использовать MATLAB ® API для PowerPoint ® (PPT API), чтобы сгенерировать презентацию Microsoft ® PowerPoint ® из результатов приложения MATLAB. Пример генерирует презентацию из результатов приложения, которое предсказывает население Соединенных Штатов. Вот слайды, которые генерирует пример:

Создайте презентацию

Импортируйте пакет PPT, чтобы не использовать длинные, полные имена.

import mlreportgen.ppt.*;

Чтобы облегчить удаление изображений, которые генерирует пример, создайте массив ячеек для хранения изображений.

images = {};

Создайте презентацию, используя шаблон по умолчанию.

ppt = Presentation('population.pptx');
open(ppt);

Добавление слайдов к презентации

Презентации PowerPoint состоят из слайдов, созданных из предопределённых размещений. Размещения содержат заполнители, которые заполняются сгенерированным содержимым. Предопределённые размещения относятся к шаблонному шаблону слайдов, определяющему стили.

Добавьте первый слайд к презентации, используя Title Slide размещение.

slide1 = add(ppt,'Title Slide');

Замените заголовок и подзаголовок слайда с помощью метода замены.

replace(slide1,'Title','Modeling the US Population');
replace(slide1,'Subtitle','A Risky Business');

Добавить второй слайд к презентации можно используя Title and Content размещение. Замените заголовок.

slide2 = add(ppt,'Title and Content');
replace(slide2,'Title','Population Modeling Approach');

Добавить текст в Content заполнитель с использованием массива ячеек.

replace(slide2,'Content',{ ...
    'Fit polynomial to U.S. Census data' ...
    'Use polynomials to extrapolate population growth' ...
    ['Based on "Computer Methods for Mathematical Computations",'...
   ' by Forsythe, Malcolm and Moler, published by Prentice-Hall in 1977'] ...
    'Varying polynomial degree shows riskiness of approach'});

Добавить третий слайд к презентации можно используя Title and Content размещение. Замените заголовок.

slide3 = add(ppt,'Title and Content');
replace(slide3,'Title','US Census data from 1900 to 2000');

Составьте график данных переписи населения США с 1910 по 2000 год.

% Time interval
t = (1910:10:2000)';

% Population
p = [91.972 105.711 123.203 131.669 150.697...
    179.323 203.212 226.505 249.633 281.422]';

% Plot
fig1 = figure;
plot(t,p,'bo');
axis([1910 2020 0 400]);
title('Population of the U.S. 1910-2000');
ylabel('Millions');

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

img1 = 'plot1.png';
saveas(fig1,img1);

images = [images {img1}];

Замените Content заполнитель с изображением.

replace(slide3,'Content',Picture(img1));

Добавьте четвертый слайд к презентации с помощью Comparison размещение. Используйте этот слайд, чтобы показать сравнение кубической и квартальной экстраполяции населения данных.

slide4 = add(ppt,'Comparison');
replace(slide4,'Title','Polynomial Degree Changes Extrapolation');

Вычислите коэффициенты для полиномиального приближения популяционных данных.

n = length(t);
s = (t-1950)/50;
A = zeros(n);
A(:,end) = 1;
for j = n-1:-1:1
    A(:,j) = s .* A(:,j+1);
end
c = A(:,n-3:n)\p;

Замените Left Text заполнитель с текстом.

replace(slide4,'Left Text','Cubic extrapolation');

Вычислите кубическую экстраполяцию.

v = (1910:2020)';
x = (v-1950)/50;
w = (2010-1950)/50;
y = polyval(c,x);
z = polyval(c,w);

fig2 = figure;
hold on
plot(v,y,'k-');
plot(2010,z,'ks');
text(2010,z+15,num2str(z));
hold off

Создать изображение из графика и добавить изображение в список удаляемых изображений.

img2 = 'plot2.png';
saveas(fig2,img2);

images = [images {img2}];

Замените Left Content заполнитель с изображением.

replace(slide4,'Left Content',Picture(img2));

Замените Right Text заполнитель с текстом.

replace(slide4,'Right Text','Quartic extrapolation');

Вычислите квартальную экстраполяцию.

c = A(:,n-4:n)\p;
y = polyval(c,x);
z = polyval(c,w);
fig3 = figure;
hold on
plot(v,y,'k-');
plot(2010,z,'ks');
text(2010,z-15,num2str(z));
hold off

Создайте изображение из графика, добавьте изображение в список удаляемых изображений и замените Right Content заполнитель с изображением.

img3 = 'plot3.png';
saveas(fig3,img3);

images = [images {img3}];
replace(slide4,'Right Content',Picture(img3));

Добавить последний слайд к презентации можно используя Title and Content размещение.

slide5 = add(ppt,'Title and Content');
replace(slide5,'Title','As the degree increases, the extrapolation becomes even more erratic');

Создайте график, чтобы продемонстрировать, что с увеличением степени экстраполяция становится еще более беспорядочной.

fig4 = figure;
cla
plot(t,p,'bo')
hold on
axis([1910 2020 0 400])
colors = hsv(8);
labels = {'data'};
for d = 1:8
   [Q,R] = qr(A(:,n-d:n));
   R = R(1:d+1,:);
   Q = Q(:,1:d+1);
   c = R\(Q'*p);   
   y = polyval(c,x);
   z = polyval(c,11);
   plot(v,y,'color',colors(d,:));
   labels{end+1} = ['degree = ' int2str(d)];
end
legend(labels, 'Location', 'NorthWest')
hold off

Создайте изображение из графика и замените Content заполнитель с изображением.

img4 = 'plot4.png';
saveas(fig4,img4);

images = [images {img4}];
replace(slide5,'Content',Picture(img4));

Закройте и просмотрите презентацию

close(ppt);
rptview(ppt);

Удалите изображения

Когда презентация закроется, изображения копируются в презентацию. Теперь можно удалить изображения.

len = length(images);
for i = 1:len
    delete(images{i});
end

См. также

|

Похожие темы