51119

Реєстрація сигналів в MatLAB

Лабораторная работа

Информатика, кибернетика и программирование

Прочитати за допомогою функції load в робочу область сигнал ЕКГ, отриманий з допомогою комп’ютерного електрокардіографа та збережений у mat-файлі. Вивести графік, позначити вісі. (файл архіву ECG_rec.rar на сайті, обрати сигнал згідно номеру за списком; ЕКГ дискретизована з частотою 400 Гц, значення напруги в мілівольтах отримується діленням величин відліків на 500). Визначити (програмно) тривалість записаного сигналу.

Украинкский

2014-02-06

613.88 KB

10 чел.

      

Національний технічний університет України

«Київський політехнічний інститут»

Факультет електроніки

Лабораторна робота № 2

з дисципліни «Теорія сигналів»

«Реєстрація сигналів в MatLAB»

Виконав:  студент 3-го курсу

групи ДП-92

 Лонтковський С.А.

Київ – 2011

Завдання:

1. Прочитати за допомогою функції load в робочу область сигнал ЕКГ, отриманий з допомогою комп’ютерного електрокардіографа та збережений у mat-файлі. Вивести графік, позначити вісі. (файл архіву ECG_rec.rar на сайті, обрати сигнал згідно номеру за списком; ЕКГ дискретизована з частотою 400 Гц, значення напруги в мілівольтах отримується діленням величин відліків на 500). Визначити (програмно) тривалість записаного сигналу.

Текст програми:

clear all

close all

load('ecg_1.mat');

v=400;

n=length(d);

i=0:n-1;

t=i/v;

subplot(2,1,1);

plot(t,[d]/500);

xlabel('t, c');

ylabel('U,mB');

grid;

subplot(2,1,2);

strips(d, 4 ,400 ,1);

xlabel('t, c');

grid;

savefile = '1.mat';

save(savefile, 't', 'd');

t=num2str( max(t));

f=strcat('t=', t,' (c)');

disp(f);

Тривалість сигналу : t=10.2375 (c)


2. Прочитати за допомогою функції load в робочу область сигнали ЕЕГ здорової та хворої людини, отримані з допомогою комп’ютерного електроенцефалографа та збережені у mat-файлі. Вивести графік, позначити вісі. (файли архіву EEG_healthy.rar та EEG_sick.rar на сайті, обрати сигнал згідно номеру за списком; ЕЕГ дискретизована з частотою 256 Гц, значення напруги подано в мікровольтах). Визначити (програмно) тривалість записаного сигналу.

Текст програми:

clear all

close all

 

subplot(3,1,1);

hold on

load('eeg_healthy_1.mat');

load('eeg_sick_1.mat');

n=length(sig_healthy);

v=256;

i=0:n-1;

t=i/v;

plot(t, sig_healthy);

plot(t,sig_sick);

xlabel('t, c');

ylabel('U,мкB');

grid;

hold off

 

subplot(3,1,2);

strips(sig_healthy, 5 ,256,1);

xlabel('t, c');

title('healthy');

grid

 

 

subplot(3,1,3);

strips(sig_sick, 5 ,256,1);

xlabel('t, c');

title('sick');

grid

savefile= '2.mat';

save(savefile, 't','sig_healthy','sig_sick');

 

t=num2str( max(t));

f=strcat('t=', t,' (c)');

disp(f);

Тривалість сигналу: t=10 (c)

3. Прочитати в робочу область сигнал внутришньочерепного тиску за допомогою функції fscanf (файл TBI_ICP.txt; сигнал одноканальний, записаний з частотою дискретизації 125 Гц, одиниці виміру – ммHg), вивести графік на екран, позначити вісі. Зберегти отриманий сигнал у вигляді mat-файлу.

Текст програми:

clear all

close all

tf=fopen('TBI_ICP.txt');

A=fscanf(tf,'%f');

n=length(A);

v=125;

i=0:n-1;

t=i/v;

strips(A, 4500,v,1);

xlabel('t, c');

ylabel('ммHg');

savefile = '3.mat';

save(savefile, 't', 'A');

t=num2str( max(t));

f=strcat('t=', t,' (c)');

disp(f);

Тривалість сигналу : t=21606.392 (c)


4. Прочитати в робочу область сигнал артеріального тиску (файл TBI_ABP.txt; сигнал одноканальний, записаний з частотою дискретизації 125 Гц, одиниці виміру – ммHg) за допомогою функції textread, вивести графік на екран, позначити вісі. Зберегти отриманий сигнал у вигляді mat-файлу. Визначити тривалість записаного сигналу. 

Текст програми :

clear all

close all

A=textread('TBI_ABP.txt');

n=length(A);

v=125;

i=0:n-1;

t=i/v;

strips(A, 2500,v ,1);

ylabel('ммHg')

savefile = '4.mat';

save(savefile, 't', 'A');

t=num2str( max(t));

f=strcat('t=', t,' (c)');

disp(f);

Тривалість сигналу : t=21606.392 (c)


5. Побудувати файл-функцію для виводу на графік ділянки сигналів, отриманих в пп. 1-4. В функцію передавати: час початку та закінчення ділянки, вектор з відліками сигналу, а також інші необхідні дані.

Текст програми :

function f=grf(tmin,tmax,x ,v,amp);

clc;

a=tmin*v;

b=tmax*v;

t=a/v:1/v:b/v;

y=amp*x(a+1:b+1);

f=plot(t,y);

grid;

xlabel('t,c');

ylabel('Y(t)');

           6. Побудувати файл сценарію для виводу на графік потрібної ділянки сигналів, отриманих в пп. 1-4. Значення початку та закінчення ділянки задавати з клавіатури.

Текст програми :

clear all;

close all;

clc;

fn=num2str(input('Name mat file: '));

r=strcat(fn,'.mat');

load(r);

disp(load(r));

x=input('X name of the vector: ');

tmin=input('tmin: ');

tmax=input('tmax: ');

v=input('V: ');

amp=input('Amplitud=X* ');

grf(tmin,tmax,x,v,amp);

Name mat file: 1

   t: [1x4096 double]

   d: [1x4096 double]

X name of the vector: d

tmin: 3

tmax: 8

V: 256

Amplitud=X* 0.03

           9. Зареєструвати за допомогою реанімаційного монітору багатоканальний сигнал ЕКГ та сигнал плетизмограми, зберегти дані у вигляді бінарного файлу.

Частота дискретизації сигналів дорівнює 155.1 Гц в кожному каналі. В бінарному файлі відліки відведень розташовані по стовпцях. Кожний рядок відповідає окремому відведенню.

Прочитати дані з бінарного файлу в робочу область MatLAB, вивести графіки всіх сигналів на екран в одному вікні за допомогою функції subplot. Зберегти отримані сигнали в матриці у mat-файлі.

Текст програми :

close all

clear all

 k=3;

 sig=fopen('sig1.bin','rb');

 A=fread(sig,[k inf],'int16');

 fclose(sig);

 n=length(A);

 v=151.1;

 i=0:n-1;

 t=i/v;

for e=1:k;

   m=A(e,:);

   subplot(k,1,e);

   plot(t,m);

   grid;

   xlabel('t, c');

   ylabel('Y(t)');

end

   savefile = 'sig1.mat';

   save(savefile, 't', 'A');

   


10. Записати звук тривалістю 5 сек. в робочу область за допомогою функції wavrecord. Записати однакові фрази з частотою дискретизації 8 кГц та 44 кГц. Записати дані в .wav- файл. Засобами операційної системи оцінити об’єм пам’яті, необхідний для збереження сигналу.

Текст програми :

clear all

close all

clc;

         

 Fs1=44000;

 y1=wavrecord(5*Fs1, Fs1,'int16');

 wavwrite(y1,Fs1,'1.wav');

  Fs2=8000;

  y2=wavrecord(5*Fs2, Fs2,'int16');

  wavwrite(y2,Fs2,'2.wav');

Sound1 44kHz: 429.73kb

Sound2 8kHz:78.17kb

11. Прочитати та прослухати отримані записи з допомогою функції wavread. Засобами MatLAB отримати з файлу дані про частоту дискретизації та кількість бітів на відлік.

Текст програми :

clear all

close all

clc;

 

[N1,frequency1,bit1]=wavread('1.wav');

[N2,frequency2,bit2]=wavread('2.wav');

 

wavplay(N1,frequency1);

wavplay(N2,frequency2);

 

disp(['                      N           bit    F(kHz)']);

t=num2str([1 length(N1) bit1  frequency1/1000;2 length(N2) bit2 frequency2/1000]);

f=strcat( 'Sound' ,t);

disp(f);

                   N          bit    F(kHz)

Sound1  220000      16       44

Sound2   40000       16        8

12. Побудувати функцію, яка будує графік запису звуку заданої тривалості. Значення початку та закінчення ділянки задавати з клавіатури.

Текст програма :

function f=grf12(tmin,tmax,x ,v,amp);

a=tmin*v;

b=tmax*v;

t=a/v:1/v:b/v;

y=amp*x(a+1:b+1);

f=plot(t,y);

grid;

xlabel('t,c');

ylabel('Y(t)');

clear all;

close all;

clc;

fn=num2str(input('Name wav file: '));

r=strcat(fn,'.wav');

wavread(r);

tmin=input('tmin: ');

tmax=input('tmax: ');

v=input('V: ');

amp=input('Amplitud=X* ');

x=[ans];

grf12(tmin,tmax,x,v,amp);

Name wav file: 1

tmin: 2.5

tmax: 5

V: 36000

Amplitud=X* 3

 

                                                                         Висновки :

Записаний аудіо сигнал тривалістю 5 сек. із частотою 44КГц займає об'єм пам'яті 429.73kb , а у випадку із частотою 8КГц складає 78.17kb. Виходячи із цих даних можна розрахувати необхідну кількість пам’яті на 1 відлік: 1b=8bit;  (78.17*1024*8)/(5*8000)=16,009≈16bit що відповідає об'єму пам'яті визначеним программно.


 

А также другие работы, которые могут Вас заинтересовать

72642. ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ 14.43 KB
  Логическими данными могут быть не только переменные и константы логического типа. Данные или выражения любого встроенного типа связанные операцией логического отношения образуют конструкцию логического типа. Такие конструкции могут входить в логические выражения наравне с логическими переменными и константами.
72643. Условные операторы 23.83 KB
  Условные операторы позволяют выбирать одно из нескольких возможных продолжений процесса программы. Имеется несколько форм условных операторов, из которых самым мощным и простым является структурный оператор IF.
72644. Последовательность выполнения операторов в программной единице 12 KB
  Главная программа является ведущей программной единицей, и обработка всей программы всегда начинается с первого исполняемого оператора главной программы. Обычно главную программу располагают в начале всей программы, т.к. этого требуют некоторые компиляторы; за главной программой следуют подпрограммы.
72645. Последовательность выполнения операторов в программной единице 12.99 KB
  Любая программная единица представляет собой последовательность операторов и комментариев. Комментарии могут располагаться в любом месте программной единицы. Они не влияют на ход выполнения программы. Порядок следования операторов в программе существен.
72646. Логические выражения 14.67 KB
  Результатом логического выражения является величина типа LOGICAL. Простейшие формы логических выражений следующие: Логические константы. Ссылки на логические переменные. Ссылки на элементы логических массивов. Ссылки на логические функции. Выражения отношения.
72647. Арифметические выражения 13.77 KB
  Используемые величины переменных или элементов массивов должны быть определены до того, как они появятся в арифметическом выражении. Также, величины целых переменных должны быть арифметическими, а не величинами меток операторов, установленными оператором ASSIGN.
72648. Размещение элементов массива в памяти ЭВМ 11.81 KB
  Если массив одномерный то его элементы хранятся в памяти друг за другом например А1 А2 А3 А4 Во многих языках программирования например в СИ элементы двумерного массива располагаются в памяти ЭВМ по строкам в Фортране по столбцам.
72649. Понятие массива 18.25 KB
  Каждый массив должен быть описан в начале программы с помощью оператора размерности DIMENSION с указанием предельных значений каждого индекса, которые задаются целыми константами. Это необходимо для того, чтобы зарезервировать соответствующий объем памяти для хранения элементов массива.
72650. Формы представления данных в памяти ЭВМ 12.71 KB
  Под кодированием понимается переход от исходного представления информации, удобного для восприятия информации человеком, к представлению, удобному для хранения, передачи и обработки. Информация в памяти ЭВМ записывается в виде цифрового двоичного кода.