Расположение формул в несколько строк и вывод матриц

Разумеется, вывод формул в несколько строк возможен при помощи создания нескольких текстовых объектов при помощи функции text. Однако, использование одного текстового объекта и интерпретатора LaTeX дает определенные преимущества, например при наборе матриц. Для вывода формулы в несколько строк следует использовать окружение array, в котором указываются: способ выравнивания (c - по центру, l - по левому краю и r - по правому краю), разделители в строке символом & и концы строк символами \\

\begin{array}{lll}формула & формула & формула \\формула & формула & формула \\формула & формула & формула\end{array}

Например, команды

figurehT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String',... '$$\begin{array}{lll} 2x+3y&=&5 \\ 4x+y&=&5 \end{array}$$', 'FontSize', 20)

приводят к появлению двух формул (одного текстового объекта), в которых выравнивание сделано по знаку равенства

При включенном интерпретаторе LaTeX, функция text требует в качестве значения свойства String строку или строковую переменную, которую можно сформировать из нескольких строк для того, чтобы обращение к функции text не занимало слишком длинную строку. Предыдущий текстовый объект можно было вывести, разбив строку с формулой на две части, записав их в переменные s1 и s2 и сцепить их затем, например при помощи квадратных скобок или функции horzcat:

figures1 = '$$\begin{array}{lll} 2x+3y&=&5 \\';s2 = '4x+y&=&5 \end{array}$$';text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String', [s1 s2], 'FontSize', 20)

Расположение формул одного текстового объекта в несколько строк позволяет использовать скобку, автоматически изменяющую размер, для записи уравнений в виде системы, например:

figures1='$$\left\{\begin{array}{lll} 2x+3y&=&5 \\'s2='4x+y&=&5 \end{array}\right.$$'hT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String',... [s1 s2], 'FontSize', 20)

приводит к системе

Окружение array позволяет набирать и более сложные формулы, например матрицы. Операторы

figures1='$$A=\left(\begin{array}{llll} a_{11}&a_{12}&\ldots&a_{1n}\\'s2='a_{21}&a_{22}&\ldots&a_{2n}\\'s3='\vdots&\vdots&\ddots&\vdots\\'s4='a_{m1}&a_{m2}&\ldots&a_{mn}'s5='\end{array}\right)$$'s=[s1 s2 s3 s4 s5]hT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String', s, 'FontSize', 20)

выводят в графическое окно следующую матрицу

В результате получается один текстовый объект, который позволяет применить к нему свойства текстового объекта, описанные в разделе Изменение вида текстового объекта, например можно изменить цвет фона и шрифта

set(hT,'Color','y','BackgroundColor','k')

В качестве примера автоматизации этого процесса для матриц, содержащих числовые значения, приведем простую функцию mat2tex, которая по заданной матрице формирует соответствующую строку для интерпретатора LaTeX (слишком длинные строки интерпретатор MATLAB не может обработать):

function s=matr2tex(A,fmt)[m,n]=size(A);s='$$\left(\begin{array}';s=[s '{' repmat('l',1,n) '}'];for i=1:m-1 for j=1:n-1 s=[s num2str(A(i,j),fmt) '\,' '&']; end s=[s num2str(A(i,j),fmt) '\\']; endfor j=1:n-1 s=[s num2str(A(m,j),fmt) '\,' '&']; ends=[s num2str(A(m,n),fmt) '\end{array}\right)$$'];

Ее входные аргументы: A - матрица и fmt - строка с форматом представления числа или количество значащих цифр, например:

figureA=rand(5)s=matr2tex(A,'%11.2f')hT=text('Position', [0.1 0.5], 'Interpreter', 'latex', 'String',s, 'FontSize', 15)

приводит к

Преобразование формулы в рисунок (объект Image)

На сайте http://www.mathworks.com/matlabcentral/ в File Exchange > Graphics > Specialized Plot and Graph Types можно скачать функцию teximage, которая по заданной строке с формулой в формате LaTeX создает рисунок, т.е. объект Image. Это оказывается полезным, при размещении формул не на осях, а на других графических объектах, например, кнопках.

ЧАСТЬ 2


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: