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

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

Необхідно також враховувати, що при збереженні М-файла його ім’я не повинно складатися лише з цифр та копіювати стандартну функцію 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; просмотров: 687. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

Почему важны муниципальные выборы? Туристическая фирма оставляет за собой право, в случае причин непреодолимого характера, вносить некоторые изменения в программу тура без уменьшения общего объема и качества услуг, в том числе предоставлять замену отеля на равнозначный...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

Общая и профессиональная культура педагога: сущность, специфика, взаимосвязь Педагогическая культура- часть общечеловеческих культуры, в которой запечатлил духовные и материальные ценности образования и воспитания, осуществляя образовательно-воспитательный процесс...

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

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