Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
/
Звіт до лабораторної роботи №1
з дисципліни: " Цифрова обробка сигналів"
Львів – 2019
Мета: Виконати операції над матрицями та векторами в системи SCILAB. Здобути навики роботи в даному середовищі.
Результат ознайомлення з програмним середовищем
Виходячи з поставленого завдання та можливостей системи Scilab, для вводу даних з клавіатури оберемо функцію «input», яка дозволить в інтерактивному режимі задати розмірність матриць А, В, С, Е.
Далі, використаємо можливість діалогу для вибору способу задання елементів матриць А та В. Для цього найдоцільніше скористатися оператором «select», який забезпечить порівняння введеного символу з еталоном та виконання відповідних дій. Так, якщо на запитання про введення матриць за допомогою випадкового заповнення, буде дано ствердну відповідь (символ «Y» або «y»), то відбудеться виклик вбудованої функції «rand». Якщо ж відповідь буде негативна (символ «n»), то користувач отримає можливість ввести елементи обох матриць з клавіатури за правилами Scilab (в квадратних дужках, розділяючи рядки знаком «;», а стовпці – «,»). Якщо ж введена відповідь буде інакшою, то виведеться повідомлення про помилку і програма завершиться.
Наступним кроком є утворення одиничної матриці, тобто такої матриці, головна діагональ якої містить одиниці, а решта елементів – нульові. Для цього слід використати функцію «eye» зі змінною n, як параметру розмірності.
Для утворення матриці С треба скористатися заданою формулою обчислення її елементів та оператором циклу «if» «end». У класичному випадку (наприклад у мові СІ), слід було б організувати вкладений цикл по номеру рядка та по номеру стовпця (і та j, відповідно). Однак, оскільки Scilab орієнтований на роботу з масивами даних, достатньо утворити цикл лише по одному параметру, а інший задати як вектор з n значень. При цьому при кожному входженні в цикл буде утворюватися не один елемент матриці, а цілий рядок, або стовпець (в залежності від того по якому параметру організований цикл).
На завершальному етапі слід знайти матрицю Х. Для цього досить записати задану формулу її обчислення так, ніби працюємо зі скалярними значеннями, а Scilab забезпечить коректний обрахунок шуканої матриці.
Зауважимо, що спосіб відображення даних на екран неграфічних даних в системі Scilab – використання функції «disp». Наприклад, команда: «disp(с)» - приведе до виводу значення змінної с у вигляді: <значення с>.
Для того, щоб не відбувалося звертання до заповнених областей пам’яті на початку програми слід скористатися командою «clear», що дозволить очистити всю доступну пам’ять. Для очищення командного вікна використовується команда «clc». При використанні графічних вікон, для їх автоматичного закриття слід звернутися до команди «close».
Нижче приведено текст програми, що реалізовує завдання. Ця програма повинна міститися в файлі <назва>.sce, який слід запускати з середовища Scilab. Виконання та відображення буде відбуватися в командному вікні.
Завдання
26
Задати дві дійсні квадратні матриці порядку . Отримати нову матрицю, шляхом додавання до елементів кожного стовпця першої матриці добутку елементів відповідних рядків другої матриці.
Текст програми
clc
clear
n=input('n=');
choice=input("Random matrix?? 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("Really man?");
end
disp(a,'A= ')
disp(b,'B= ')
i1= prod(b,2);
i= repmat(i1,1,n);
c= a +i ;
disp(c,'C= ')
Результат виконання програми
/
Висновок: під час виконання лабораторної роботи я ознайомився з можливостями програмного середовища SCILAB, освоїв основні програмні конструкції та продемонстровані засоби графічного та неграфічного відображення інформації. Крім того, виконав поставлене індивідуальне завдання, що закріпило набуті навики на практиці.