Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1 МАТЛАБ 2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
340.99 Кб
Скачать

Определение и обработка ячеек

Список ячеек:

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