В этом примере показано, как использовать 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
mlreportgen.ppt.Presentation
| mlreportgen.ppt.Slide