Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вывод многострочного текста




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

Предположим, мы хотим разместить на осях в точке с координатами (0.5, 0.5) текст так, как показано на следующем рисунке:

С использованием массива ячеек это можно сделать следующим образом (для создания массива ячеек применяются фигурные скобки):

figureaxesstr = {'first line'; 'second line'; 'third line'};hT = text(0.5, 0.5, str, 'FontSize', 20)

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

hT = text(0.5, 0.5, {'first line'; 'second line'; 'third line'}, 'FontSize', 20)

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

figureaxesstr = char('first line', 'second line', 'third line')hT = text(0.5, 0.5, str, 'FontSize', 20)

В двух примерах, приведенных выше, создавался один текстовый объект, указатель на который записывался в переменную hT. Если в качестве координат текста указать векторы, длина которых совпадает с числом строк многострочного текста, то получится столько текстовых объектов, сколько строк в тексте:

figureaxesstr = {'first text object'; 'second text object'; 'third text object'}hTT = text([0.1 0.3 0.5], [0.2 0.4 0.6], str, 'FontSize', 20)

Теперь hTT является вектором указателей на три текстовых объекта, свойства которых можно изменять независимо, например:

set(hTT(1), 'Color', 'r', 'FontWeight', 'bold')set(hTT(2), 'BackgroundColor', 'y', 'Color','b')set(hTT(3), 'EdgeColor', 'm', 'LineWidth',5)

Аналогичным образом можно использовать массив строк для создания нескольких текстовых объектов при помощи одной функции text. Кроме того, допускается использование символа вертикальной черты | в качестве разделителя строк. Т.е. в приведенном выше примере вместо str = {'first text object'; 'second text object'; 'third text object'} можно было написать:

str = char('first text object','second text object', 'third text object')

или

str = 'first text object|second text object|third text object'

и результат был бы тем же самым.

Приведем пример, в котором на оси выводится матрица

следующим образом:

Сначала создается двумерный массив M, в который заносятся заданные элементы матрицы. Затем при помощи функции size в переменные m и n записывается число его строк и столбцов. Далее в графическом окне располагаются оси со следующими свойствами: пределы по оси абсцисс от 0 до n+1, по оси ординат - от 0 до m+1, подписи осей совпадают с номерами строк и столбцов, ось абсцисс расположена сверху, а ось ординат направлена вниз. Далее в цикле проходим по столбцам матрицы. На каждом шаге цикла текущий столбец числовых значений матрицы преобразуем в массив строк функцией num2str и создаем столько текстовых объектов, сколько элементов в столбце (т.е. столько, сколько строк в матрице). Массив строк указываем в функции text для создания текстовых объектов и записываем указатели на полученные объекты в соответствующие позиции двумерного массива указателей hT.

M = [1 2 3 4; 5 6 7 8; 9 10 11 12] [m, n] = size(M); figure axes('XLim', [0 n+1], 'YLim', [0 m+1],... 'XTick', 1:n, 'YTick', 1:m,... 'YDir', 'reverse', 'XAxisLocation', 'top') hT = zeros(m, n) for j=1:n C = M(:, j) hT(:, j) = text(j*ones(1, m), 1:m, num2str(C),... 'HorizontalAlignment', 'center', 'FontSize', 30) end

В результате на оси выводится матрица и в двумерный массив hT заносятся указатели на все созданные текстовые объекты. Этот массив можно использовать для дальнейшей работы с ними. Например, если требуется изменить цвет элементов второй строки на красный, то достаточно выполнить:

set(hT(2,:), 'Color', 'r')

Если требуется выделить элементы, меньшие двух, синим цветом, от трех до семи - зеленым, а большие семи - красным так, как показано на рисунке ниже, то удобно применить логическое индексирование к массиву hT:

set(hT(M>7), 'Color', 'r') set(hT(M>=3&M<=7), 'Color', 'g') set(hT(M<3), 'Color', 'b')

Примечание про логическое индексирование.

Логическое индексирование, т.е. обращение к элементам массива, удовлетворяющим некоторому условию, является очень удобным средством MATLAB для обработки данных. Примеры логического индексирования приведены в справочной системе MATLAB в разделе: Programming: Data Types: How Logical Arrays are Used. Например, если в некотором массиве A

A = [1 2 3; 12 1 2; 33 90 1];

надо заменить элементы, превосходящие среднее арифметическое его значений в полтора раза на среднее арифметическое, то достаточно использовать операторы:

m = mean(mean(A))A(A>1.5*m) = m

Так происходит потому, что результатом операции сравнения (примененной к исходному массиву A) является логический массив (тип logical array) того же размера, что и A, в котором единицы означают выполнение проверяемого условия для соответствующих элементов массива A

A>1.5*mans = 0 0 0 0 0 0 1 1 0

Указание этого массива в качестве индекса для исходного массива A приводит к обращению к тем его элементам, которым соответствуют логические единицы. В нашем примере это элементы с индексами 3, 1 и 3, 2, которые как раз и превосходят в полтора раза среднее арифметическое элементов заданного массива A.




Поделиться с друзьями:


Дата добавления: 2015-06-04; Просмотров: 518; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.