Функция tripuls(T,w,s) генерирует треугольный импульс с длительностью w и перекосом, заданным третьим входным параметром s, который должен лежать в диапазоне от -1 до 1. При s=0 генерируется симметричный треугольный импульс. Генерирует треугольный импульс с длительностью w и перекосом, заданным третьим входным параметром s, который должен лежать в диапазоне от -1 до 1. При s=0 генерируется симметричный треугольный импульс.
Рис. 6
Треугольный импульс
6. Cоздание файл-функций и script-файлов в среде Matlab
6.1 Cоздание файла-функции для вычисления интеграла от функции на интервале , используя метод прямоугольников.
Листинг файл-функции:
function I=integral(N)
%Вычисление приближенного значения интеграла методом %прямоугольников, определенного от 0 до 2*pi
% нет синтаксиса обращения
a=0;
b=0,2*pi;
h=(b-a)/N; %высота прямоугольника
c=0:2*pi/N:2*pi;
y=sin(c).^2; %ширина прямоугольника
I=h*sum(y)
Команда:
I=integral(100,0,2*pi);
Результат: I = 3.1416
6.2. Создание script-файла для вычисления интеграла от функции на интервале , используя метод прямоугольников
Листинг файла-скрипта:
% Вычисление приближенного значения определенного интеграла c заданным числом точек разбиения
N=input('Введите число точек разбиения= ');
I=integral(N)
Команды:
ведите число точек разбиения= 100
Введите a=0
Введите b=2*pi
Результат: I = 3.1416
7. Генерирование и построение графиков шума, сигнала и их суммы.
X=randn(50,1)
Листинг файла-скрипта
for m=1:50
x(m)=randn(1); %генерирование 50 значений случайного шума с
помощью функции randn()
y(m)=2*m*(0.9^m);
end;
z=x+y;
subplot(1,3,1); %Вывод графиков
plot(y);
title('График функции 2*m*(0.9^m)');
xlabel('m');
ylabel('y(m)');
legend('2*m*(0.9^m)');
subplot(1,3,2);
plot(x);
title('Случайные числа');
legend('rand');
xlabel('m');
ylabel('x(m)');
subplot(1,3,3);
plot(z);
title('Сумма');
xlabel('m');
ylabel('z(m)');
Рис. 7. Графики функций
8. Генерирование дискретных сигналов: единичного импульса, ступенчатого и пилообразного.
Листинг скрипт-файла:
% Процедура генерирования и построения графиков
% единичного импульса (imp), ступенчатого (step)
% и пилообразного (ramp) сигналов
L = input('Введите длину сигнала= '); %Ввод значения длины сигнала
n = 1:L;
FT = input(' Введите частоту отсчетов = '); %Ввод значения частоты отсчетов
T = 1/FT; %Период сигнала
imp = [1 zeros(1,L-1)] %заполняем массив imp нулями (кроме 1-го элемента - единичный импульс)
% вариант imp = (n==1);
step = ones(1,L); %Формируем массив единиц размера 1 х L.
ramp = (n-1).*step; %перемножаем массивы (отсчеты)*(шаг) из за смещения на 1 получается пилообразный сигнал
%Выводим графики
subplot(3,1,1);
stem(n-1,imp);
set(gca,'FontName','Arial Cyr', 'FontSize',10)
xlabel([' Интервал отсчетов',num2str(T), ' сек']);ylabel('Амплитуда');
subplot(3,1,2);
stem(n-1,step);
set(gca,'FontName','Arial Cyr', 'FontSize',10)
xlabel(['Интервал отсчетов ',num2str(T), ' сек']);ylabel('Амплитуда');
subplot(3,1,3);
stem(n-1,ramp);
set(gca,'FontName','Arial Cyr', 'FontSize',10)
xlabel(['Интервал отсчетов',num2str(T), ' сек']);ylabel('Амплитуда');
Рис.8
9. Процедура формирования и проигрывания последовательности нот
% Процедура формирования и проигрывания последовательности нот
% Каждая последующая нота имеет частоту, большую в 21/12 раз, чем предыдущая
fs = 8192; % частота отсчетов
t = 0:1/fs:0.4; % длительность каждой ноты
tspace = .05; % длительность паузы между нотами
fr = 2^(1/12); % отношение частот соседних нот
%Частоты нот
A4 = 440; % Частота ноты ЛЯ первой октавы - опорная нота
B4 = A4*fr^2; % Частота ноты СИ первой октавы
C5 = A4*fr^3; % Частота ноты ДО второй октавы
C4 = A4*fr^(-9);
D4 = A4*fr^(-7);
E4 = A4*fr^(-5);
F4 = A4*fr^(-4);
G4 = A4*fr^(-2);
xspace = zeros(size(tspace));
% формирование вектора нот и пауз между ними
x = [cos(C4*2*pi*t),xspace, cos(D4*2*pi*t),xspace,cos(E4*2*pi*t),...
xspace,cos(F4*2*pi*t),xspace,cos(G4*2*pi*t),xspace,...
cos(A4*2*pi*t),xspace,cos(B4*2*pi*t),xspace,cos(C5*2*pi*t)];
sound(x,fs); % прослушивание вектора x
10. Написание файл – функции [x, t] = harmonic(omega0, omegas, dur) для генерирования синусоидального сигнала.
Листингфайл-функции:
function [x,t]=harmonic(omegao,omegas,dur)
%Функция генерирования синусоидального сигнала
Ts = 2*pi/omegas;
t = 0: Ts: dur;
x = cos(omega0*t);
Последовательность команд
(используем функцию harmonic для построения графиков гармоник)
[x,t]=harmonic(2*pi*261.63, 2*pi*8192, 0.01);
subplot(3,1,1)
plot(t,x)
set(gca,'FontName','Arial Cyr', 'FontSize',10)
title('cos(2*pi*261.63*t)')
ylabel('do(t)');
[x,t]=harmonic(2*pi*880, 2*pi*8192, 0.01);
subplot(3,1,2);
plot(t,x);
set(gca,'FontName','Arial Cyr', 'FontSize',10)
title('cos(2*pi*880*t)')
ylabel('lya(t)');
[z,t]=harmonic(2*pi*440, 2*pi*8192, 0.01);
y = 0.5*z + x;
subplot(3,1,3);
plot(t,y);
set(gca,'FontName','Arial Cyr', 'FontSize',10)
title('0.5*cos(2*pi*440*t)+cos(2*pi*880*t)')
ylabel('y(t)');
Рис.9 Графики косинусоидального сигнала
Выводы:
Файл-скрипт – это последовательность команд для matlab, которые сохранены в виде файла, подобно макросу.
Файл-функция – последовательность команд оформленная по определенным правилам, являющаяся исполняемой командой для matlab.
Нота – звуковая волна (гармоническое колебание определенной частоты).
В результате выполнения работы были приобретены практические навыки работы в среде MATLAB, а именно:
- генерирования непрерывных и дискретных по времени сигналов;
- построения графиков сигналов;
- написания файл-функций и script-файлов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.