Исследование возможностей среды программирования MatLab
.docСанкт-Петербургский государственный
электротехнический университет «ЛЭТИ»
кафедра РС
Курсовая работа
по дисциплине «Информатика»:
«Исследование возможностей среды программирования MatLab»
Выполнил: Дурягин И.Е.
Факультет: РТ
Группа: 6111
Вариант: 3
Преподаватель:Добырн В.В.
Санкт-Петербург
2007.г.
Задание №1.
Цель: составить программу, осуществляющую генерацию смеси полезного сигнала и помехи с известным законом распределения. Программа должна обеспечивать:
-
Ввод необходимых параметров с клавиатуры;
-
Формирование массивов отсчетов сигналов, помехи и их аддитивной смеси;
-
Построение графиков сигнала, помехи, и их смеси;
-
Построение гистограмм помехи и смеси сигнала и помехи;
Вид сигнала: пачка радиоимпульсов с прямоугольной огибающей пачки и прямоугольной огибающей одиночного импульса. Помеха распределена по нормальному закону с известными математическим ожиданием и дисперсией. Параметры: амплитуда огибающей, длительность импульса, частота заполнения, число импульсов в пачке, период повторения, математическое ожидание и дисперсия помехи.
Радиоимпульс , где A(n) – огибающая импульса, N – длительность импульса, n – номер текущего отсчета; – частота заполнения; – начальная фаза.
Листинг программы:
clear;
L=input('Введите длительность импульса(100) :');
N=input('Введите период повторения (130):');
f=input('Введите частоту заполнения (20):');
Numb=input('Количество радиоимпульсов в пачке (2-3):');
a=input('Амплитуда (15-20):');
M=input('Мат ожидание:');
D=input('Дисперсия:');
t=0:0.01:0.99;
S1=[ones(1,L)];
Ch=S1;
Car=a*sin(2*pi*f*t);
Imp=Ch.*Car;
Imp=[Imp,zeros(1,(N-L))];S=Imp;
for i=2:Numb
S=[S,Imp];
end
figure(1);
subplot(311); plot(S,'b'); grid on; title('График сигнала');%график сигнала
P=2*a*(rand(size(S))*D+M)-a;%помеха
subplot(312); plot(P,'r');grid on; title('График помехи');%график помехи
PS=S+P; %смесь сигнала и помехи subplot(313); plot(PS,'g'); grid on; title('График смеси Сигнала и Помехи');
figure(2)
subplot(211); grid on; hist(P,20); title('Гистограмма помехи');%гистограмма помехи
subplot(212); grid on; hist(PS,20); title('Гистограмма смеси сигнала и помехи')%гистограмма смеси сигнала и помехи
Введённые данные:
Длительность импульса(100) :100
Период повторения (130):130
Частота заполнения (20):20
Количество радиоимпульсов в пачке (2-3):3
Амплитуда (15-20):15
Мат ожидание:0.4
Дисперсия: 0.6
Блок-схема 1-ого задания.
Задание №2.
Цель: составить программу, позволяющую исследовать статистические характеристики биологического сигнала (ритма сердца человека). Программа должна иметь удобный пользовательский интерфейс и осуществлять:
-
Чтение файла исходных данных;
-
Расчет и вывод на экран графика прочитанной последовательности отсчетов и их гистограммы;
-
Расчет и вывод на экран математического ожидания, дисперсии, коэффициентов асиметрии и эксцесса;
Листинг программы:
figure(1);
h1=uicontrol ('style','Text','string','Карманы гистограммы','position',[1 400 140 16]); %надпись карманы гисторгаммы
h2=uicontrol ('style','edit','string','20','position',[150 400 30 16]); % надпись 20
[f,p] = uigetfile('*.*','Выберите файл с данными'); %окно выбора файла
load([p f]); %загрузка
eval(['x = ',f,';']);
ha=axes('position',[ .4 .1 .55 .87]);
h3=uicontrol ('style','pushbutton','string','Ритм сердца','position', ...
[1 290 180 18],'callback','plot(x);grid;'); %график ритма
h4=uicontrol ('style','pushbutton','string','Гистограмма ритма','position', ...
[1 242 180 18],'callback','k=get(h2,''string'');kol=sscanf(k,''%f'');hist(x,kol);grid'); %гистограмма ритма
h5=uicontrol ('style','pushbutton','string','Гистограмма норм. отсчётов','position', ...
[1 196 180 18],'callback','disp=std(x);mo=mean(x);x1=disp*randn(size(x))+mo;hist(x1,kol);grid'); ... %гистограмма нормальных отсчётов
disp=std(x) %дисперсия
mo=mean(x) %математическое ожидание
k3=0; % далее вычисление коэффициентов асимерии и эксцесса при помощи массива
k4=0;
n=length(x);
for i=1:n
k2=std(x);
k3z=(1/n)*((x(i)-mo)^3);
k3=k3+k3z;
k4z=(1/n)*((x(i)-mo)^4);
k4=k4+k4z;
As=k3/(sqrt(k2^3));
Ak=(k4/(k2^2))-3;
end
h6=uicontrol ('style','Text','string','Асиметрия','position',[1 150 100 20]); %надпись асиметрия
h7=uicontrol ('style','edit','string',As,'position',[120 150 60 20]); %надпись значения асиметрии
h8=uicontrol ('style','Text','string','Эксцесс','position',[1 100 100 20]); %надпись эксцесс
h9=uicontrol ('style','edit','string',Ak,'position',[120 100 60 20]); %надпись значения эксцесса
Файл исходных данных: ABR;
Полученные результаты:
disp =0.0319
mo =0.9468
Ритм сердца.
Гистограмма ритма.
Гистограмма норм.отсчётов
математическое ожидание E и дисперсия D.
,
асиметрия .
,
эксцесс .
,
Блок-схема 2-ого задания.
Задание №3.
Цель: составить и отладить программу, осуществляющую решение следующей задачи:
среди множества случайных точек, расположенных в трёхмерном пространстве, выбрать подмножество точек, лежащих внутри сферы заданного радиуса, имеющей центр, совпадающий с центром трёхмерной системы координат. Обеспечить ввод с клавиатуры количества исходных точек и радиуса сферы. Построить трёхмерный график, отображающий исходное множество точек и отметить на нем найденное подмножество контрастным цветом. Отобразить точку, являющуюся центром тяжести исходного множества, и центр системы координат.
Листинг программы:
clear;
% Ввод данных:
n = input('Введите количество случайных точек ');
n2 = input('Введите границу для случайных точек по оси x ');
n3 = input('Введите границу для случайных точек по оси y ');
n4 = input('Введите границу для случайных точек по оси z ');
R = input('Введите радиус сферы R =');
s1=[0];
s2=[0];
s3=[0];
% Формирование массива случайных точек:
for i = 1 : n
x(i) = 2*n2*rand-n2;
y(i) = 2*n3*rand-n3;
z(i) = 2*n4*rand-n4;
s1=x(i)+s1;
s2=y(i)+s2;
s3=z(i)+s3;
end;
% Построение массива случайных точек:
plot3(x,y,z,'*b')
hold on;
grid
xlabel('Координата x');
ylabel('Координата y');
zlabel('Координата z');
% Построение массива точек, удовлетворяющих условию:
for i = 1 : n
if sqrt((x(i))^2+(y(i))^2+(z(i))^2) < R
plot3(x(i),y(i),z(i),'*r');
end;end;
title('"Красные точки удовлетворяют условию.Синие-не удовлетворяют"')
plot3(0,0,0,'*g')
text(5,0,0,'НАЧАЛО КООРДИНАТ(ЗЕЛЁНАЯ ТОЧКА)');% координата "х" изменена для избежания наложения текста на точку;
plot3(s1/n,s2/n,s3/n,'*yellow');
text((s1/n),(s2/n)+n3/7,(s3/n)+n4/7,'ЦЕНТР ТЯЖЕСТИ(ЖЁЛТАЯ ТОЧКА)');
Введённые данные:
1.)Введите количество случайных точек 170;
2.)Введите границу для случайных точек по оси x 40;
3.)Введите границу для случайных точек по оси y 40;
4.)Введите границу для случайных точек по оси z 40;
5.)Введите радиус сферы R =35
Блок-схема 3-его задания.