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

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

Смотрите также

|

Похожие темы