
- •Определение и обработка символьных данных
- •Вывод значений полей структуры в командное окно:
- •Создание файл-функций для работы с массивами структур :
- •Определение и обработка ячеек
- •Определение и обработка объектов классов
- •Работа с файлами
- •Графическая визуализация
- •Анимационная и дескрипторная графика
Определение и обработка ячеек
Список ячеек:
authors=struct('name', {' Сидоров С. С.', 'Иванов И. И.'},'age',{31, 33},'phone',{'11-11-11','33-33-33'});
whos
pause
Поиск и замена в массиве ячеек:
s1='12341234'
s2=strrep(s1,'123', {''})
whos
pause
Преобразование массива ячеек в символьный массив :
s=char({'ABC'}, '1234')
whos
pause
Извлечение строки из массива ячеек:
s_c=[{'123','ABCD'};{'45678','abc'}]
s_c(1,2)
s_c(1, : )
pause
Конкатенация массивов ячеек:
s=strcat({'123','ABC'},{'5678','xz'})
whos
pause
Вертикальная конкатенация массива ячеек:
s=strvcat({'123', 'ABCD'})
whos
pause
Файл- функция students, выделяющая фамилии студентов из массива
ячеек:
function strmas = students(CELLMAS)
% Файл- функция формирует массив строк с фамилиями
% студентов, участвующих в эксперименте .
% Использование strmas = students(CELLMAS)
% Определение размеров массива ячеек
SizeMas = size(CELLMAS);
% Нахождение числа студентов( информация о деятельности
% каждого сдудента хранится в столбце)
NStudents = SizeMas(2);
if NStudents >= 1
% Если число студентов больше или равно единице , то
% считываем из поля Family третьей ячейки первого столбца
% фамилию студента и заносим в массив строк strmas
strmas = CELLMAS{3, 1}.Family;
end
% Продолжаем считывание по всем оставшимся столбцам ,
% начиная со второго
for k = 2:NStudents
% Считываем фамилию из поля Family третьей ячейки k-го столбца
fam = CELLMAS{3, k}.Family;
% Добавляем фамилию в массив строк
strmas = char(strmas, fam);
end
Определение и обработка объектов классов
Справка по конкретному объекту:
help hsin
help sinh
help pi
pause
Справка по группе объектов :
help timefun
pause
Файл- программа для вывода текстового объекта в точку с заданными
координатами:
% Создание графического окна и осей
HF = figure('Menu', 'none', 'Color', 'w');
HAx = axes;
% Генерация векторов значений аргумента и функции
x = [-2:0.01:3];
y = exp(-x.^2);
plot(x,y)
% Задание координат положения текстового объекта
Xtext = 1.17;
Ytext = exp(-Xtext.^2);
% Создание и отображение текстового объекта
HTxt = text(Xtext, Ytext, '\leftarrow Функция {\ity} = {\ite}^{-x^2}');
Операторы для получения ординаты точки минимума в zeroandmin.m:
% Поиск локального минимума функции на [a,b]
% Получение значения функции и аргумента локального минимума
[minvalue, fmin] = fminbnd(funname, a, b, options);
Заголовки и пояснения:
axes(HAx(1)) % левые верхние оси текущие
title('Лок. минимум') % добавление заголовка
axes(HAx(2)) % правые верхние оси текущие
title('Ноль функции ') % добавление заголовка
axes(HAx(3)) % нижние оси текущие
% Создание текстового объекта, расположенного в нуле функции
HTxtZer = text('String', '\leftarrow ноль ', 'Position' , [zero 0]);
% Создание текстового объекта, расположенного в лок. минимуме функции
HTxtMin = text('String', '\leftarrow лок. мин .',...
'Position' , [minvalue fmin], 'Rotation', 90);
Операторы , демонстрирующие изменение свойств линий и осей при
помощи указателей :
% Установка свойства XGrid осей с указателем HAx в 'on'
set(HAx,'XGrid','on')
% Задание цвета первой линии ( графика синуса ) с указателем HLines(1)
set(HLines(1), 'Color', 'k')
% Задание толщины первой линии ( графика синуса ) с указателем HLines(1)
set(HLines(1), 'LineWidth', 3)
% Задание цвета второй линии ( графика косинуса ) с указателем HLines(1)
set(HLines(2), 'Color', 'k')
% Задание типа маркера второй линии ( графика косинуса )
% с указателем HLines(2)
set(HLines(2), 'Marker', 'o')
% Задание цвета маркеров второй линии ( графика косинуса )
% с указателем HLines(2)
set(HLines(2), 'MarkerFaceColor', 'w')
% Задание цвета границ маркеров второй линии ( графика косинуса )
% с указателем HLines(2)
set(HLines(2), 'MarkerFaceColor', 'w')
% Задание цвета границ маркеров второй линии ( графика косинуса )
% с указателем HLines(2)
set(HLines(2), 'MarkerEdgeColor', 'k')
Файл- функция , использующая указатели на объекты :
function maxfun(a,b)
% Файл- функция с интерфейсом из командной строки для
% исследования функций на максимум на отрезке [a,b]
% Использование: maxfun(a,b)
% Создание графического окна ( оно становится текущим )
HF = figure;
% Создание осей в текущем графическом окне
HAx = axes;
% Задание вектора значений аргумента
x = [a:(b-a)/30:b];
str = ''; % инициализация строки запроса ввода пользователя
funcount = 0; % инициализация счетчика введенных функций
maximums = [];% инициализация массива с максимумами функций
hFuns = []; % инициализация массива указателей на линии графиков
% Обработка ввода пользователя в бесконечном цикле
while 1
str = input(' Введите функцию , или new, или end: ', 's');
switch str
case 'new' % Пользователь задал очистку осей
axes(HAx); % оси с указателем HAx стали текущими
cla % очистка текущих осей
case('end') % Пользователь завершает работу с программой
break % выход из цикла
otherwise % Пользователь ввел новую функцию
funcount = funcount + 1; % увеличение счетчика функций
% Формирование команды для вычисления массива значений
eval(strcat('y =', str, ';'));
% Оси HAx должны быть текущими для вывода графика
axes(HAx)
hold on % график следует добавить на оси
% Построение графика функции , введенной пользователем,
% и добавление указателя на него в массив указателей
HFuns(funcount) = plot(x,y)
% Установка требуемых свойств линии графика новой функции
set(HFuns(func ount), 'Marker', 'o')
set(HFuns(funcount ), 'MarkerEdgeColor', 'k')
set(HFuns(funcount ), 'MarkerFaceColor', 'w')
set(HFuns(funcount), 'LineWidth', 1)
set(HFuns(funcount), 'Color', 'k')
% Вычисление максимума новой функции и добавление
% его значения в массив , содержащий максимумы
maximums(funcount) = max(y);
if funcount > 1 % пользователь ввел две или более функций
% Удаление маркеров с графика предыдущей функции
set(HFuns(funcount-1), 'Marker', 'none')
% Поиск функции с максимальным значением среди ранее
% введенных , в oldmax записывается значение ,
% а в N - номер требуемой функции
[oldmax, N] = max(maximums(1:funcount-1));
% График найденной функции должен отображаться жирной линией
set(HFuns(N), 'LineWidth', 3)
% Сравнение максимального значения новой функции с
% максимальным из значений предыдущих функций
if maximums(funcount) > oldmax
% Новая функция принимает самое большое значение среди
% всех функций , введенных пользователем, поэтому
% график последней введенной функции должен рисоваться
% жирной линией
set(HFuns(f uncount), 'LineWidth', 3)
% Линия графика функции , которая ранее имела максимальное
% значение , теперь не должна быть жирной
set( HFuns(N), 'LineWidth', 1)
end
end
end
end