text5=uicontrol(main454,'style','text','string','_','position',[15, 240, 200, 20]);
set(text5,'string', sprintf("Маx отн. ошибка\ = %1.4f",sigma3));
text6=uicontrol(main454,'style','text','string','_','position',[15, 220, 200, 20]);
set(text6,'string', sprintf("Среднеквадратич. ошибка\ = %1.4f",sigmaCK3));
text7=uicontrol(main454,'style','text','string','_','position',[15, 200, 200, 20]);
set(text7,'string', sprintf("Апертура\ = %1.1f",d3));
Приложение 6
Функции
6.1. Функция расчета характеристик сигнала
function [fd,Razm,dispers,Sstdev,Smean,Smax,Smin,Xvkv,Xmkv,Xnkv,dT]=fun_harakteristikki(s,Tmax,N,f,Sv)
dT=Tmax/(N-1) // шаг дискретизации
Smin=min(s)//минимум идеального сигнала
Smax=max(s)//максимум идеального сигнала
Smean=mean(s)//среднее значение идеального сигнала
Sstdev=stdev(s)//среднее квадратичное отклонение идеального сигнала
Xnkv=Sv(max(find(f<=0.25))) // Нижняя квантиль
Xmkv=Sv(max(find(f<=0.5))) // Медиана
Xvkv=Sv(max(find(f<=0.75))) // Верхняя квантиль
// Числовые характеристики распределения вероятностей
dispers=sum((s-Smean).^2)/(N-1) // Дисперсия
Razm=Smax-Smin//размах
fd=1/dT // Частота дискретизации
endfunction
6.2. Функция сортировки сигнала по возрастанию
function [Sv,f]=fun_sortirovka(s,N)
Ssort=gsort(s,'g','i')//сортировка значений сигнала по возрастанию
k=1/N
Sv(1)=Ssort(1)
f(1)=k
j=1
for i=2:length(Ssort)
if Ssort(i)==Ssort(i-1) then
f(j)=f(j)+k
else j=j+1
Sv(j)=Ssort(i)
f(j)=f(j-1)+k
end
end
endfunction
6.3. Функция расчета характеристик АЦП
function[n,V0,skv]=fun_acp(s1)
N=length(s1)
XLmax=[]
XLmin=[]
dx=[]
if s1(1)>s1(2) then
z = 0
else
z = 1
for i = 2:(N-1)
if (s1(i)>s1(i+1)) then
if z==1 then
XLmax=[XLmax s1(i)]
dx=[dx abs(s1(i))-XLmin(length(XLmin))]
end
z = 0
elseif (s1(i)<s1(i+1)) then
if z==0 then
XLmin=[XLmin s1(i)]
dx=[dx (abs(s1(i)-XLmax(length(XLmax))))]
end
z = 1
elseif z==1 then
XLmax=[XLmax s1(i)]
dx=[dx (abs(s1(i))-XLmin(length(XLmin)))]
z = 2
else
XLmin=[XLmin s1(i)]
dx=[dx (abs(s1(i))-XLmax(length(XLmax)))]
end
end
end
mindx=min(dx)
V0=(mindx)/2
Vmax=max(s1)
r=fix(Vmax/V0)//разрешающая способность
nv=round(log2(r))//разрядность ацп
sn=[8 10 12 14 16 18 20 22 24]
nomer_nv=find(sn>=nv)
n=sn(min(nomer_nv))//разрядность ацп
// Определим максимальное напряжение на входе АЦП
r=2^(n) //Разрешение АЦП
V0=Vmax/r //минимально различимый шаг напряжения
Va=0:V0/3360:V0*10;
Q2=(fix(Va/V0))
Q=Va-V0*Q2
figure
plot(Va,Q)
xtitle ('График ошибки АЦП','Уровень сигнала (В)','Уровень ошибки (В)')
set(gca(),"grid",[1 1])
skv=fix(s1/V0)// процедура квантования полученого сигнала
figure
plot(Va,Q2)
xtitle ('График квантования полученого сигнала','Значение сигнала, восстановленного после преобразования (В)','Цифровой сигнал')
set(gca(),"grid",[1 1])
Qf=s1-V0*skv// ошибкa квантования:
figure
plot(t(1:100),Qf(1:100))
set(gca(),"grid",[1 1])
xtitle('График фактической ошибки АЦП', 'Длительность записи (с)', 'Уровень фактической ошибки (В)')
endfunction
6.4. Функция спектрального анализа сигнала
function [m,f]=fun_spektr(s,dT,N,fd)
t=(0:N-1)*dT
T=max(t)
df=1/T
fmax=fd/2
f=df:df:fmax
for k=1:length(f)
a(k)=sum(s.*cos(2*%pi.*t*f(k)))*2/N
b(k)=sum(s.*sin(2*%pi.*t*f(k)))*2/N
end
m=(a.^2+b.^2).^0.5
m(1)=m(1)/2
endfunction
6.5. Функция фильтрации с помощью БИХ фильтра
function [y,hz1]=fun_filter(s,fd,Tmax,dT,ftypen,n,frq,x_ot,x_do,t,zx)
M=fix(Tmax/dT)+1 //количество отсчетов в исходном сигнале
L=fix((M)/2); //количество отсчетов частотной характеристики
df=1/Tmax;
//============_идеальная_ачх
if zx==1 then
fi=[0 x_ot x_ot fd/2]//ачх идеального фильтра
a=[0 0 1 1]
figure()
plot(fi,a)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.