В этом примере показано, как использовать MATLAB® API для PowerPoint® (API PPT), чтобы сгенерировать представление 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'});
Добавьте третье понижение в представление с помощью the Title and Content
размещение. Замените заголовок.
slide3 = add(ppt,'Title and Content'); replace(slide3,'Title','US Census data from 1900 to 2000');
Создайте график данных о переписи США от 1 910 до 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