Сумма (9) в каждый k-ый момент времени определяется только одним k‑ым слагаемым, т.к. все остальные слагаемые в этот момент времени обращается в нуль. Внутри промежутка
восстанавливаемая функция определяется всеми слагаемыми (рисунок 21, а - непрерывная плавная линия).3.3 Воспроизведение непрерывного сигнала
Известно, что функция вида
представляет собой реакцию идеального фильтра нижних частот с граничной частотой на дельта-функцию. Следовательно, если в приемном устройстве поместить такой фильтр и пропустить через него квантованный сигнал, представляющий собой последовательность с частотой весьма кратковременных импульсов, амплитуды которых пропорциональны отсчетам исходной непрерывной функции, то, суммируя выходные сигналы фильтра, можно воспроизвести с достаточно высокой степенью точности исходный непрерывный сигнал.Однако нас интересует случай, когда сигнал x(t) ограничен во времени (Tc). В этом случае сумма (9) будет конечной
, (10)где
.Усечение бесконечной суммы, т.е. ограничение ее теми значениями Xk, которые оказываются в пределах Tc, уменьшает точность представления сигнала x(t).
Это первый фактор, определяющий точность представления.
Кроме того, сигнал конечной длительности имеет бесконечный спектр гармонических составляющих. Поэтому ограничение спектра сигнала некоторой частотой
является вторым фактором, снижающим точность представления непрерывного сигнала x(t) дискретными отсчетами.Средний квадрат относительной погрешности в этом случае определяется выражением
,где Е – полная энергия неограниченного спектра сигнала;
- энергия «хвоста» спектра, т.е. той его части, которая расположена за пределами fc .Чтобы погрешность формулы (10) была мала, должно выполняться условие
. (11)Дополнительная погрешность вносится при восстановлении сигнала x(t) за счет не идеальности фильтра нижних частот, т.к. идеальный фильтр НЧ физически нереализуем (предполагает наличие отклика на
-функцию при t<0, т.е. до начала подачи на вход).Однако на практике никогда не требуется идеально точное воспроизведение передаваемого сигнала, поэтому ограничивают спектр сигнала диапазоном с верхней частотой
, в котором сосредоточена основная энергия сигнала.Дисперсия приведенной погрешности, возникающей в результате усечения, будет
,где
- средняя мощность отсекаемой части спектра;Tc – длительность сигнала;
- идеальные значения x(t).Возможно и следующее представление
,где
- средняя мощность сигнала - относительная площадь отсекаемого участка энергетического спектра x(t).По заданной величине
и известных , , можно определить .а) Используются и следующие критерии оценивания:
.б) Максимальная абсолютная и относительная ошибки:
, .в) Эффективная относительная ошибка
.г) Средняя относительная ошибка
.д) Среднеквадратическая ошибка
На рисунке 3 показан внешний вид программы при запуске.
Рисунок 3. Внешний вид рабочего окна программы
Рабочее окно программы, как видно из рисунка, состоит из нескольких полей. В нижней части окна пользователю предоставляется возможность изменить входные данные, которые установлены по умолчанию. Там же расположена кнопка «Сгенерировать сообщение» при нажатии на эту кнопку программа генерирует случайный сигнал (рисунок 4).
Рисунок 4 – Вывод на экран случайной функции
После этого мы можем выбрать необходимый шаг квантования и нажать на кнопку «Дискретизировать по времени» и получим отображение отчетов (рисунок 5).
Рисунок 5 – Отображение отчетов, соответственно шагу квантования.
В результате, после нажатии на кнопку «Восстановить непрерывную функцию» получаем восстановленный сигнал (рисунок 6).
Рисунок 6 – Отображение восстановленного сигнала по отчетам.
Листингпрограммы
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Series, StdCtrls, Spin, TeEngine, ExtCtrls, TeeProcs, Chart,
ComCtrls, Menus, Buttons;
type
TForm1 = class(TForm)
CSpinEdit2: TSpinEdit;
CSpinEdit1: TSpinEdit;
Chart1: TChart;
Series1: TFastLineSeries;
Series2: TFastLineSeries;
Series3: TBarSeries;
Label2: TLabel;
Label1: TLabel;
MainMenu1: TMainMenu;
Fgfg1: TMenuItem;
dfd1: TMenuItem;
sf1: TMenuItem;
sdf1: TMenuItem;
dsf1: TMenuItem;
N1: TMenuItem;
sdf2: TMenuItem;
sd1: TMenuItem;
sdf3: TMenuItem;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure sdf2Click(Sender: TObject);
procedure sf1Click(Sender: TObject);
procedure dsf1Click(Sender: TObject);
procedure sd1Click(Sender: TObject);
procedure sdf1Click(Sender: TObject);
procedure sdf3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
massiv:array[1..50] of real;
j:integer;
implementation
{$R *.dfm}
{ TFormLR6 }
var
count: Integer = 0;
count2: Integer = 0;
maxi: double = 0.0;
maxy: double = -200.0;
miny: double = 200.0;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i: double;
begin
Series1.Clear();
Series2.Clear();
Series3.Clear();
SpeedButton3.Enabled:=false;
Sd1.Enabled:=false;
SpeedButton3.Flat:=true;
SpeedButton2.Enabled:=true;
dsf1.Enabled:=true;
count:=0;
i:=0;
while (i<=CSpinEdit1.Value) do
begin
Series1.AddXY(i,(random(5)+1)*0.05*cos(i+random(5)*0.01),'',clTeeColor);
i:=i+0.5 ;
Inc(count);
end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
x,k: Integer;
z: double;
begin
Series3.Clear();
SpeedButton3.Enabled:=true;
sd1.Enabled:=true;
SpeedButton3.Flat:=false;
x:=0;
for k:=0 to count-1 do
begin
if (Series1.XValues.Value[k]=x) then
begin
z:=Series1.YValues.Value[k];
massiv[k]:=z;
Series3.AddXY(x,z,'',clTeeColor);
if (abs(Series1.YValues.Value[k]) > maxi) then
maxi:=abs(Series1.YValues.Value[k]);
x:=x+CSpinEdit2.Value;
end;
end
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
k,x: Integer;
z: double;
begin
chart1.Series[1].Clear;
x:=0;
for k:=0 to count-1 do
begin
if (Series1.XValues.Value[k]=x) then
begin
z:=Series1.YValues.Value[k];
massiv[k]:=z;
Series2.AddXY(x,z,'',clTeeColor);
if (abs(Series1.YValues.Value[k]) > maxi) then
maxi:=abs(Series1.YValues.Value[k]);
x:=x+CSpinEdit2.Value;
end;
end
end;
function fmod(x,y: Real): Real;
begin
Result := x - (x / y) * y;
end;
procedure TForm1.sdf2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.sf1Click(Sender: TObject);
begin
SpeedButton1.Click;
end;
procedure TForm1.dsf1Click(Sender: TObject);
begin
SpeedButton2.Click;
end;
procedure TForm1.sd1Click(Sender: TObject);
begin
SpeedButton3.Click;
end;
procedure TForm1.sdf1Click(Sender: TObject);
begin
Application.MessageBox('Тема: Квантование сигналов по времени','О программе',0);
end;
procedure TForm1.sdf3Click(Sender: TObject);
begin
Application.MessageBox('Выполниластудентка 3 курсагруппы 03-КТ-11, А. Л.','Обавторе',0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
dsf1.Enabled:=false;
Sd1.Enabled:=false;
SpeedButton2.Enabled:=false;
SpeedButton3.Enabled:=false;
end;
initialization
Randomize();
Заключение
В данной работе был реализован алгоритм квантования сигала по времени. Из проделанной работы можно сделать вывод, что при реальной передачи сигналов восстановленный сигнал, при большом (редком) шаге квантованья, сильно отличается от исходного. Следовательно, для того, чтобы сигнал передать как можно более точно необходимо часто передавать отчеты. Т.е чем меньше шаг квантования, тем больше соответствие восстановленного сигнала с исходным
Разработанная программа реализует восстановление исходного сигнала по отчетам, а также предоставляет гибкий характер работы пользователя с программным приложением по изменению параметров.
Разработанное приложение может быть незаменимой частью более сложных программных пакетов для передачи данных.
А.В.Власенко, В.И.Ключко - Теория информации и сигналов. Учебное пособие / Краснодар: Изд-во КубГТУ, 2003.- 97 с.
Теория передачи сигналов: Учебник для вузов / А.Г.Зюко, Д.Д.Кловский,
Цифровая обработка сигналов: Учебник для вузов / А.Б. Сергиенко – СПб.: Питер, 2003. – 604 с.: ил.
Delphi 6.0. Практика программирования. Учебное пособие / Фаронов В.В. Издание 7-е, переработанное. – М.: «Нолидж», 2001. – 672с.: ил.