МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
/
Звіт з лабораторної роботи №1
з дисципліни: «Цифрова обробка сигналів»
на тему: «Виконання елементарних операцій над сигналами
в системі SCILAB»
Завдання
Варіант - 20
Задати квадратну матрицю А порядку . Знайти вектор А*в, при чому елементи вектора в визначити за формулою: .
Результати ознайомлення з програмним середовищем
Виходячи з поставленого завдання та можливостей системи Scilab, для вводу даних з клавіатури оберемо функцію «input», яка дозволить в інтерактивному режимі задати розмірність матриць А, В.
Далі, використаємо можливість діалогу для вибору способу задання елементів матриці А. Для цього найдоцільніше скористатися оператором «select», який забезпечить порівняння введеного символу з еталоном та виконання відповідних дій. Так, якщо на запитання про введення матриць за допомогою випадкового заповнення, буде дано ствердну відповідь (символ «Y» або «y»), то відбудеться виклик вбудованої функції «rand». Якщо ж відповідь буде негативна (символ «n»), то користувач отримає можливість ввести елементи обох матриць з клавіатури за правилами Scilab (в квадратних дужках, розділяючи рядки знаком «;», а стовпці – «,»). Якщо ж введена відповідь буде інакшою, то виведеться повідомлення про помилку і програма завершиться.
Для утворення матриці В треба скористатися заданою формулою обчислення її елементів та оператором циклу «if» «end». У класичному випадку (наприклад у мові СІ), слід було б організувати вкладений цикл по номеру рядка та по номеру стовпця (і та j, відповідно). Однак, оскільки Scilab орієнтований на роботу з масивами даних, достатньо утворити цикл лише по одному параметру, а інший задати як вектор з n значень. При цьому при кожному входженні в цикл буде утворюватися не один елемент матриці, а цілий рядок, або стовпець (в залежності від того по якому параметру організований цикл).
На завершальному етапі слід знайти матрицю Х. Для цього досить записати задану формулу її обчислення так, ніби працюємо зі скалярними значеннями, а Scilab забезпечить коректний обрахунок шуканої матриці.
Зауважимо, що спосіб відображення даних на екран неграфічних даних в системі Scilab – використання функції «disp». Наприклад, команда: «disp(с)» - приведе до виводу значення змінної с у вигляді: <значення с>.
Для того, щоб не відбувалося звертання до заповнених областей пам’яті на початку програми слід скористатися командою «clear» з параметром «all», що дозволить очистити всю доступну пам’ять. Для очищення командного вікна використовується команда «clc». При використанні графічних вікон, для їх автоматичного закриття слід звернутися до команди «close».
Нижче приведено текст програми, що реалізовує завдання. Ця програма містититься в файлі lab1.sce, який слід запускати з середовища Scilab. Виконання та відображення буде відбуватися в командному вікні.
Текст програми
clc
clear all
n=input('n=')
choice=input('input matrix randomize? Y/N ',"s");
select choice
case 'y' then
a=10.*rand(n,n);
case "n" then
a=input('input matrix A =')
else
error("Wrong answer")
end
disp(a,'a=')
i=[1:n];
disp(i,'i=')
for i=1:n
if pmodulo(i,2)==0 then b(i)=1/((i*i)+2)
elseif pmodulo(i,2)<>0 b(i)=1/i
else error("Pomylka")
end
end
disp(b,'b=')
c=a*b;
disp(c,'c=')
Результат виконання програми
/
Рис. 1 – Результат виконання програми
Висновки
В результаті виконаної лабораторної роботи я ознайомився з можливостями програмного середовища SCILAB, освоїв основні програмні конструкції та продемонстровані засоби графічного та неграфічного відображення інформації. Крім того, виконав поставлене індивідуальне завдання, що закріпило навики на практиці.