Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Исследование возможностей среды программирования MatLab

.doc
Скачиваний:
27
Добавлен:
01.05.2014
Размер:
192 Кб
Скачать

Санкт-Петербургский государственный

электротехнический университет «ЛЭТИ»

кафедра РС

Курсовая работа

по дисциплине «Информатика»:

«Исследование возможностей среды программирования 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-его задания.