Цифрова обробка сигналів 2013
Лабораторна робота № 1
ОЗНАЙОМЛЕННЯ З ОСНОВАМИ РОБОТИ В СИСТЕМІ SCILAB. ВИКОНАННЯ ЕЛЕМЕНТАРНИХ ОПЕРАЦІЙ НАД СИГНАЛАМИ.
МЕТА РОБОТИ. Вивчити можливості системи Scilab. Набути навики роботи в даному середовищі.
ПОРЯДОК ВИКОНАННЯ РОБОТИ
Запустити систему Scilab.
Ознайомитися з демонстраційною програмою, звернувши увагу на виконання елементарних операцій над матрицями і векторами.
В командному вікні Scilab проілюструвати можливі операції над матрицями та векторами.
Вивчити можливості системи для роботи з графікою.
Написати власну програму(.sci), яка реалізовує завдання, задане варіантом.
Написати власну функцію(.sce), яка реалізовує завдання, задане варіантом.
Продемонструвати виконання написаних програм в Scilab.
ЗМІСТ ЗВІТУ
1. Завдання.
2. Результати ознайомлення з демонстраційною програмою (перелік і короткий опис основних функцій).
3. Текст написаної програми та пояснення алгоритму її роботи.
4. Результат роботи програми.
5. Висновки.
6. Список використаної літератури, в тому числі Internet – ресурси.
КОНТРОЛЬНІ ЗАПИТАННЯ
Що таке Scilab ?
Які елементарні операції можна виконувати над сигналами ?
Які засоби надає Scilab для виводу графічних даних?
Яка різниця між файлами .sce та .sci в Scilab, як вони використовуються ?
Як оформити власну функцію в Scilab ?
Як вивести на екран результат обчислень ?
Завдання
1
Задати цілочисельну матрицю розміру . Знайти матрицю, що отримується з даної, шляхом перестановки рядків – першого з останнім, другого з передостаннім і т.д.

2
Задати квадратну матрицю А порядку . Знайти вектор А*в, при чому елементи вектора в визначити за формулою:.

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

4
Задати квадратну матрицю А порядку . Знайти матрицю А*В, при чому елементи матриці В визначити за формулою:, .

5
Задати дійсний вектор та дійсну квадратну матрицю порядку . Побудувати дійсну матрицю розміру , вставивши у вихідну матрицю між 5 і 6 стовпцем новий стовпець з елементами .

6
Задати квадратну матрицю А порядку . Знайти матрицю А*В, при чому елементи матриці В визначити за формулою:, .

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

8
Задати квадратну матрицю А порядку . Знайти матрицю А*В, при чому елементи матриці В визначити за формулою:, .

9
Задати матрицю розміру , елементами якої є дійсні числа 1/n,2/n,3/n,... ()/n та довільні дійсні числа , натуральні числа . Утворити нову матрицю розміру вставкою після рядка з номером заданої матриці нового рядка з елементами та подальшою вставкою після стовпця з номером нового стовпця з елементами . ( - змінні).


10
Задати дві дійсні квадратні матриці порядку . Отримати нову матрицю відніманням від елементів кожного рядка першої матриці добутку елементів відповідного стовпця другої матриці.

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

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

13
Задати квадратну матрицю А порядку . Знайти вектор 17*А*в, при чому елементи вектора в визначити за формулою:
.

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

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

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

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

18
Задати дві дійсні квадратні матриці порядку . Отримати нову матрицю додаванням до елементів кожного стовпця першої матриці добутку елементів відповідних рядків другої матриці.

19
Задати дві дійсні квадратні матриці порядку . Отримати нову матрицю множенням елементів кожного рядка першої матриці на найбільший з елементів відповідного стовпця другої матриці.

20
Задати квадратну матрицю А порядку . Знайти вектор А*в, при чому елементи вектора в визначити за формулою: .


21
Задати квадратну матрицю А порядку . Знайти матрицю А+В, при чому елементи матриці В визначити за формулою:, .

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

23
Задати дійсний вектор та дійсну квадратну матрицю порядку . Побудувати дійсну матрицю розміру , вставивши у вихідну матрицю між 5 і 6 рядком новий рядок з елементами .

24
Задати дві цілочисельні квадратні матриці порядку . Отримати нову матрицю множенням елементів кожного стовпця першої матриці на найменший з елементів відповідного рядка другої матриці.

25
Задати квадратну матрицю А порядку . Знайти матрицю А+В, при чому елементи матриці В визначити за формулою:, .

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

24
Задати матрицю розміру , елементами якої є дійсні числа 1,2,3,... (). Також задати довільні дійсні числа , і натуральні числа .
Утворити нову матрицю розміру вставкою після рядка з номером заданої матриці нового рядка з елементами та подальшою вставкою після стовпця з номером нового стовпця з елементами . ( - змінні).

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

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

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


Приклад виконання
1. Завдання:
Задати квадратні матриці А і В порядку . Знайти матрицю Х:
,
де - одинична матриця порядку ,
елементи матриці знаходяться за формулою:
.
2. Результати ознайомлення з програмним середовищем.
Виходячи з поставленого завдання та можливостей системи Scilab, для вводу даних з клавіатури оберемо функцію «input», яка дозволить в інтерактивному режимі задати розмірність матриць А,В,С,Е.
Далі, використаємо можливість діалогу для вибору способу задання елементів матриць А та В. Для цього найдоцільніше скористатися оператором «select», який забезпечить порівняння введеного символу з еталоном та виконання відповідних дій. Так, якщо на запитання про введення матриць за допомогою випадкового заповнення, буде дано ствердну відповідь (символ «Y» або «y»), то відбудеться виклик вбудованої функції «rand». Якщо ж відповідь буде негативна (символ «n»), то користувач отримає можливість ввести елементи обох матриць з клавіатури (за правилами Scilab, тобто в квадратних дужках, розділяючи рядки знаком «;», а стовпці – «,»). Якщо ж введена відповідь буде інакшою, то виведеться повідомлення про помилку і програма завершиться, що забезпечується функцією «error».
Наступним кроком є утворення одиничної матриці, тобто такої матриці, головна діагональ якої містить одиниці, а решта елементів – нульові. Для цього слід використати функцію «eye» зі змінною n, як параметру розмірності.
Для утворення матриці С треба скористатися заданою формулою обчислення її елементів та оператором циклу «if» «end». У класичному випадку (наприклад у мові СІ), слід було б організувати вкладений цикл по номеру рядка та по номеру стовпця (і та j, відповідно). Однак, оскільки Scilab орієнтований на роботу з масивами даних, достатньо утворити цикл лише по одному параметру, а інший задати як вектор з n значень. При цьому при кожному входженні в цикл буде утворюватися не один елемент матриці, а цілий рядок, або стовпець (в залежності від того по якому параметру організований цикл).
На завершальному етапі слід знайти матрицю Х. Для цього досить записати задану формулу її обчислення так, ніби працюємо зі скалярними значеннями, а Scilab забезпечить коректний обрахунок шуканої матриці.
Зауважимо, що спосіб відображення даних на екран неграфічних даних в системі Scilab – використання функції «disp» з параметром, який вказує, що слід вивести. При цьому назва параметра не виводиться. Так, рядок: «disp(с)» - приведе до виводу значення змінної с у вигляді: <значення с>.
Для того, щоб не відбувалося звертання до заповнених областей пам’яті на початку програми слід скористатися командою «clear» з параметром «all», що дозволить очистити всю доступну пам’ять. Для очищення командного вікна використовується команда «clc». При використанні графічних вікон, для їх автоматичного закриття слід звернутися до команди «close» з параметром «all» (без параметрів - вона приведе до закриття лише поточного графічного вікна).
Нижче приведено текст програми, що реалізовує завдання. Ця програма повинна міститися в файлі <назва>.sci, який слід запускати з середовища Scilab. Виконання та відображення буде відбуватися в командному вікні.
3. Текст програми
clc
// очистка екрану

clear all
// очистка пам’яті

n=input('n=')
// ввід розміру матриць

choice=input("input matrix randomize? Y/N ","s");
// запит на спосіб введення елементів матриць
// випадковим чином

select choice


case 'y' then
// при ствердній відповіді

a=10.*rand(n,n);
// генерація матриць А і В випадковим чином,

b=10*rand(n,n);
// в обраному діапазоні.

case "n" then
// при негативній відповіді

a=input('input matrix A =')
// запит на ввід обох матриць в ручному

b=input('input matrix B =')
// режимі

else
// при іншій відповіді

error("Wrong answer")
// повідомлення про помилку

end
// завершення оператора «select»

disp(a,'a=')
disp(b,"b=")
// відображення значень у командному вікні

e=eye(n,n)
disp(e,"e=")
// утворення та вивід одиничної матриці, введеного
// розміру, за допомогою вбудованої функції.

i=[1:n]'*ones(1,n);
// визначення матриці, що містить номер рядка

disp(i,"i=")


j=i';
// визначення матриці, що містить номер стовпця

c=1./sin(i+2*j/%pi);
disp(c,"c=")
// побудова матриці С за заданою формулою і вивід // її на екран

x=13*a*(c+e)-b*(c+a);
disp(x,"x=")
// Обрахунок і вивід на екран шуканої матриці Х


4. Результат виконання приведеної програми:
>>n=3
n =
3
>>input matrix randomize? Y/N y
a =
6 7 6
5 8 9
7 10 2
b =
13 12 1
4 10 12
4 2 3
e =
1 0 0
0 1 0
0 0 1
c =
1.0022 1.3102 4.3542
2.0670 -7.6181 -1.4391
-2.1050 -1.1048 -1.0198
x =
-0.6491 -707.7388 -19.1921
-58.5927 -876.1858 2.2501
339.3545 -830.5394 149.1551
5. Висновки
В ході даної лабораторної роботи відбулося ознайомлення з можливостями програмного середовища SCILAB, освоєні основні програмні конструкції та продемонстровані засоби графічного та неграфічного відображення інформації. Крім того, виконано поставлене індивідуальне завдання, що закріпило набуті навики на практиці. Розглянута різні альтернативні шляхи реалізації одних і тих же функцій.