Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Необхідно також враховувати, що при збереженні М-файла його ім’я не повинно складатися лише з цифр та копіювати стандартну функцію MatLab, наприклад plot





Усі М-файли мають розширення «.m».

Розглянемо приклад написання простої програми побудови графіка у М-файлі. Лістінг програми у вікні М-файла з коментарями показаний на рис. 4.2.

Рис. 4.2. Лістінг програми побудови графіка у вікні М-файлу

 

Після запуску М-файлу при відсутності помилок відкриється вікно з побудованим графіком, яке показано на рис. 4.3.

 

 

Рис. 4.3. Графік побудованої функції

 

Оператор циклу for. Правила вводу даних з командного вікна.

Цикл for використовується для виконання заданого числа дій, що повторюються. У загальному випадку цикл має наступну форму запису

for < умова циклу>

< команди MatLab>

end

Нехай потрібно виконати процедуру знаходження суми відповідних елементів двох векторів та вивести на екран результуючий вектор. Програма, що записується у М-файл матиме вигляд

a=[1 2 6 7 9 45 3];

b=[2 4 5 7 8 12 4];

for n=1: length(a) %початок та умови циклу

c(n)=a(n)+b(n); %сумування векторів

end; %кінець циклу

c %вивід результуючого вектора на

%екран

На екрані з’явиться вектор с

c =

3 6 11 14 17 57 7

У цьому прикладі використовується команда length(a), що визначає розмір заданого вектора. Це використовується тоді, коли цей розмір невідомий, або задається користувачем. У протилежному випадку можна було б записати for n=1: i, де i – розмір заданого вектора.

При роботі з векторами та матрицями часто виникає задача вводу елементів з клавіатури. Для цього застосовується команда input('текст'). Наприклад потрібно задати розмір квадратної матриці, ввести її елементи з клавіатури та вивести її на екран. Текст програми буде мати наступний вигляд

A=0;

n=input('Введіть розмір квадратної матриці ');

for i=1: n

for j=1: n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i, j) = input(' ');

end;

end;

disp(A)

Для усунення можливості існування матриці А, що була створена раніше і записана у робочу область, цій матриці присвоюється нульове значення на початку програми. Вивід тексту на екран з проханням ввести відповідний елемент матриці реалізується за допомогою команди disp. У випадку виводу однієї змінної на екран вона має форму запису disp(A), у випадку виводу тексту disp('текст'), а у випадку виводу декількох змінних, наприклад елементів векторів, disp(['текст', num2str(n)]), де num2str(n) – функція перетворення номера елемента у текстовий формат для виводу на екран. Для виводу на екран елементів матриць, ця команда приймає більш складний вигляд, як показано у програмі.

Розглянемо приклад. Дано дві квадратні матриці n-го порядку. Ввести з клавіатури порядок матриць, заповнити матриці вручну, знайти суму цих матриць та записати результат у нову матрицю.

Текст М-файлу матиме наступний вигляд

A=0;

B=0;

C=0; %створення початкових нульових матриць

n=input('Введіть розмір квадратної матриці ');

for i=1: n

for j=1: n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i, j) = input(' ');

end; %цикл вводу першої матриці

end;

disp('A=')

disp(A) %виведення першої матриці на екран

for i=1: n

for j=1: n

disp(['Введіть елемент матриці B(' num2str(i) ', ' num2str(j) ')']);

B(i, j) = input(' ');

end; %цикл вводу другої матриці

end;

disp('B=')

disp(B) %виведення другої матриці на екран

for i=1: n

for j=1: n

C(i, j)=A(i, j)+B(i, j);

end; %цикл сумування матриць

end;

disp('Результат суми відповідних елементів матриць')

disp('C=')

disp(C) %вивід на екран результату суми

Умовний оператор if (if…else).

Оператор if (if…else) використовується для побудови циклів з виконанням чи невиконанням деяких умов. У загальному випадку він має наступну форму запису

if < умова>

< команди MatLab>

else

< команди MatLab>

end

Приклад. Задано два вектори. Написати програму порівняння елементів цих векторів. Якщо елементи однакові, то у результуючий вектор вивести на його місце цей елемент, якщо елементи різні, то вивести на його місце нуль.

Програма у М-файлі матиме наступний вигляд

a=[1 4 5 6 7];

b=[2 3 5 5 7]; %завдання векторів

c=0;

for i=1: 5 %цикл перебору елементів векторів

if a(i)==b(i) %умова рівності елементів

c(i)=a(i);

else c(i)=0; %протилежна умова

end

end

disp('c=')

disp(c) %вивід на екран результату

На екрані з’явиться наступний результат

c=

0 0 5 0 7

У даному прикладі для реалізації протилежної умови до рівності елементів векторів використовується оператор else.

Розглянемо ще один приклад.

Задана квадратна матриця. Ввести розмір та елементи матриці з клавіатури. Знайти кількість непарних елементів, що розташовані під головною діагоналлю, включаючи останню. Вивести на екран вектор із цих елементів.

Лістінг програми буде мати вигляд

A=0;

C=0;

k=1;

disp('Введіть розмір квадратної матриці А ')

n=input('');

for i=1: n

for j=1: n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i, j) = input(' ');

end;

end;

disp('A=')

disp(A)

for i=1: n

for j=1: n

if i> =j & & mod(A(i, j), 2)~=0

C(k)=A(i, j);

k=k+1;

end;

end;

end;

disp('C=')

disp(C)

disp('Кількість непарних елементів')

disp(length(C))

На екрані відобразиться наступне

Введіть розмір квадратної матриці А

Введіть елемент матриці А(1, 1)

Введіть елемент матриці А(1, 2)

Введіть елемент матриці А(1, 3)

Введіть елемент матриці А(2, 1)

Введіть елемент матриці А(2, 2)

Введіть елемент матриці А(2, 3)

Введіть елемент матриці А(3, 1)

Введіть елемент матриці А(3, 2)

Введіть елемент матриці А(3, 3)

A=

1 2 3

5 6 7

1 5 8

C=

1 5 1 5

Кількість непарних елементів

Умова знаходження елементів під головною діагоналлю, включаючи останню i> =j, та умова їх непарності mod(A(i, j), 2)~=0 записується у команді if i> =j & & mod(A(i, j), 2)~=0. У цій програмі також використовується один з логічних операторів «логічне І», яке позначається символом & &. Інші логічні оператори та операції співвідношення наведені у таблиці 4.1.

Таблиця 4.1.

Логічні оператори
& & логічне І
|| логічне АБО
~ логічне НІ
Операції співвідношення
== рівність
< менше
> більше
> = більше або рівне
< = менше або рівне
~= не рівне

 

Розглянемо приклад використання логічних операторів та операторів співвідношення. Задано квадратну матрицю n-го порядку. Ввести порядок матриці та її елементи з клавіатури. Знайти кількість парних та додатних елементів матриці, що розташовані у нижньому трикутнику, який утворюється перетином побічної та головної діагоналі, як показано на рис. 4.4, та вивести їх на екран.

Рис. 4.4. Задана область матриці до прикладу

 

Спочатку потрібно записати умову області, що зображена на рис. 4.4. Припустимо, що матриця має i рядків та j стовпців. Умова знаходження елементів на головній діагоналі буде i=j, а на побічній i+j=n+1. Над головною діагоналлю i< j, під головною діагоналлю i> j, над побічною діагоналлю i+j< n+1, під побічною i+j> n+1. Таким чином, якщо об’єднати умови знаходження елементів під головною та побічною діагоналлю можна отримати умову розташування елементів у заданій області. Ця умова матиме вигляд i> =j & & i+j> =n+1. Знак = використовується для того, щоб включити до заданого контуру частини самих діагоналей. Далі до цієї умови необхідно додати умову парності елемента та його додатного значення. Це реалізується за допомогою команд mod та sign. Можливі варіанти застосування цих команд подані у таблиці 4.2.

 

 

Таблиця 4.2.

Команда y=mod(x, 2)
y=1 якщо x непарне
Y=0 якщо x парне
Команда y=sign(x)
y=1 якщо x> 0
Y=0 якщо x=0
y=-1 якщо x< 0

 

У результаті, повною умовою до даного прикладу буде наступний запис i> =j & & i+j> =n+1 & & mod(A(i, j), 2)==0 & & sign(A(i, j))==1

Програма у М-файлі буде мати наступний вигляд

A=0;

C=0;

k=1;

n=input('Введіть розмір квадратної матриці ');

for i=1: n

for j=1: n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i, j) = input(' ');

end;

end;

disp('A=')

disp(A)

for i=1: n

for j=1: n

if (i> =j) & & (i+j> =n+1) & & mod(A(i, j), 2)==0) & & sign(A(i, j))==1)

C(k)=A(i, j);

k=k+1;

end;

end;

end;

disp('C=')

disp(C)

disp('Кількість парних додатних елементів')

disp(length(C))

Для довільно вибраної матриці 3-го порядку результат буде наступним

Введіть розмір квадратної матриці 3

Введіть елемент матриці А(1, 1)

Введіть елемент матриці А(1, 2)

Введіть елемент матриці А(1, 3)

Введіть елемент матриці А(2, 1)

Введіть елемент матриці А(2, 2)

Введіть елемент матриці А(2, 3)

Введіть елемент матриці А(3, 1)

Введіть елемент матриці А(3, 2)

-5

Введіть елемент матриці А(3, 3)

A=

1 2 3

4 6 8

8 -5 3

C=

6 8

Кількість парних додатних елементів

Умовний оператор while.

Оператор while застосовується так само, як і оператор if. Процедура запису наступна

while < умова>

< команди MatLab>

end

Розглянемо приклад застосування оператора. Нехай заданий масив з 10-ти елементів. Виводити на екран елементи масиву, доти, доки вони менше заданого числа, що вводиться з клавіатури. Також вивести порядковий номер елемента. Якщо у масиві не присутнє задане число, то вивести на екран відповідне повідомлення.

Текст програми наступний

p=input('Введіть число p=');

c=0;

n=1;

k=1;

d=0;

a=[1 2 5 4 9 1 2 8 5 10];

for n=1: length(a)

if a(n)==p; %цикл перевірки наявності

%числа p

d(k)=a(n); %якщо p існує, воно

%у відповідний масив, якщо

%не існує масив буде нульовий

k=k+1;

end

end

n=1;

if d==0 %перевірка масиву існування p

disp('такого числа немає') %якщо він

%нульовий – виводиться

%відповідне повідомлення

else %у іншому випадку виконується

%основна програма

while a(n)< p

c(n)=a(n);

n=n+1;

end

disp('c=')

disp(c)

disp('порядковий номер числа у масиві')

disp(length(c)+1)

end

Після запуску програми у випадку, якщо число присутнє у масиві результат буде наступним

Введіть число p=9

p =

c=

1 2 5 4

порядковий номер числа у масиві

Якщо не присутнє

Введіть число p=190

такого числа немає

Розглянемо наступний приклад. Дано дві дійсні квадратні матриці розміром n £ 7. Отримати нову матрицю того ж розміру шляхом перемноження елементів кожного рядка першої матриці на найбільший елемент відповідного рядка другої матриці.

Текст програми у М-файлі буде мати вигляд

A=0;

B=0;

C=0;

Cmax=0;

n=input('Введіть розмір квадратної матриці ');

for i=1: n

for j=1: n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i, j) = input(' ');

end;

end;

disp('A=')

disp(A)

for i=1: n

for j=1: n

disp(['Введіть елемент матриці B(' num2str(i) ', ' num2str(j) ')']);

B(i, j) = input(' ');

end;

end;

disp('B=')

disp(B)

for i=1: n

Cmax(i, 1)=B(i, 1); %присвоєння максимального

%елемента першому елементу у кожному рядку

for j=1: n

if B(i, j)> Cmax(i, 1)

Cmax(i, 1)=B(i, j); %цикл пошуку

%максимального елемента у кожному

%рядку

else

continue

end

end

end

disp('Вектор з максимальних елементів кожного рядка ')

disp('Cmax=')

disp(Cmax);

for i=1: n

for j=1: n

C(i, j)=A(i, j)*Cmax(i, 1); %цикл перемноження

%кожного елемента першої матриці на

%максимальний елемент відповідного рядка

%другої матриці

end

end

disp('Результуюча матриця')

disp('C=')

disp(C)

Результат виконання програми для довільних матриць розміром 3х3 буде наступним

Введіть розмір квадратної матриці 3

Введіть елемент матриці А(1, 1)

Введіть елемент матриці А(1, 2)

Введіть елемент матриці А(1, 3)

Введіть елемент матриці А(2, 1)

Введіть елемент матриці А(2, 2)

Введіть елемент матриці А(2, 3)

Введіть елемент матриці А(3, 1)

Введіть елемент матриці А(3, 2)

Введіть елемент матриці А(3, 3)

A=

1 4 7

9 3 5

6 2 3

Введіть елемент матриці B(1, 1)

Введіть елемент матриці B(1, 2)

Введіть елемент матриці B(1, 3)

Введіть елемент матриці B(2, 1)

Введіть елемент матриці B(2, 2)

Введіть елемент матриці B(2, 3)

Введіть елемент матриці B(3, 1)

Введіть елемент матриці B(3, 2)

Введіть елемент матриці B(3, 3)

B=

1 6 9

4 5 7

3 2 5

Вектор з максимальних елементів кожного рядка

Cmax=

Результуюча матриця

C=

9 36 63

63 21 35

30 10 15

У даній програмі використаний оператор continue для продовження роботи циклу при невиконанні умови if B(i, j)> Cmax(i, 1) так як потрібно перебрати усі елементи масиву. Якщо потрібно зупинити цикл при невиконанні деякої умови, то можна застосувати оператор break.

 







Дата добавления: 2014-11-10; просмотров: 704. Нарушение авторских прав; Мы поможем в написании вашей работы!




Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

ТЕХНИКА ПОСЕВА, МЕТОДЫ ВЫДЕЛЕНИЯ ЧИСТЫХ КУЛЬТУР И КУЛЬТУРАЛЬНЫЕ СВОЙСТВА МИКРООРГАНИЗМОВ. ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА БАКТЕРИЙ Цель занятия. Освоить технику посева микроорганизмов на плотные и жидкие питательные среды и методы выделения чис­тых бактериальных культур. Ознакомить студентов с основными культуральными характеристиками микроорганизмов и методами определения...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

Studopedia.info - Студопедия - 2014-2025 год . (0.01 сек.) русская версия | украинская версия