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



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

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

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

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