📄 eks.m
字号:
clear;
clc;
wybor=input('Wybierz zadanie [1,2]: ');
if wybor == 1
%Wykonujemy zadanie nr 1
%OPERACJE NA WEJ孋IU
b0=5.5;
%wgranie zmiennych do przestrzeni roboczej
load mm_lab_09_zad1.mat;
%wyswietlenie danych pomiarowych z eksperymentu
y=uee_zad1; %wektor danych wejsciowych
%figure
subplot(2,2,1);
plot(y);
title('Dane wejsciowe');
[ilew ilek]=size(y);
ybez0=y;
ybez0(isnan(y))=0;
%figure
subplot(2,2,2);
plot(ybez0);
title('Dane wejsciowe-uzupelnione brakujace dane o 0');
%wyliczenie sredniej i odchylenia standardowego
ybez0sr=mean(ybez0);
ybez0os=std(ybez0);
%eliminacja brakujacych danych
for i=2:1:ilew-1
if ybez0(i)==0
ypop=ybez0(i-1);
a=i;
while ybez0(a)==0
a=a+1;
end
ynast=ybez0(a);
ybez0(i)=(ypop+ynast)/2;%(ybez0(i-1)+ybez0(i+1))/2;
end
end
%figure
subplot(2,2,3);
plot(ybez0);
title('Dane wejsciowe-uzupelnione brakujace dane o srednia z poprzedniej i nastepnej');
%wyliczenie sredniej i odchylenia standardowego
%gdzie sa i ile jest zmiennych izolowanych
izol=abs(ybez0-ybez0sr)>1.2*ybez0os;
liczba_izol=sum(izol);
%eliminacja danych izolowanych
ybez0bi=ybez0; %wektor danych bez danych izolowanych
for i=2:1:ilew-1
if (abs(ybez0bi(i)-ybez0sr)>1.2*ybez0os);
ybez0bi(i)=(ybez0bi(i-1)+ybez0bi(i+1))/2;
end
end
for i=2:1:ilew-1
if abs((ybez0bi(i)-(ybez0bi(i-1)+ybez0bi(i+1))/2))>ybez0os
ybez0bi(i)=(ybez0bi(i-1)+ybez0bi(i+1))/2;
end
end
%figure
subplot(2,2,4);
plot(ybez0bi);
title('Dane wejsciowe-eliminacja danych izolowanych-srednia z poprzedniej i nastepnej');
%usuniecie trendow
ybeztr=detrend(ybez0bi,'constant');
figure
plot(ybeztr);
title('Dane wejsciowe-usuniecie skladowej stalej')
%filtracja
aa=[1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10];
bb=1;
uczyste=filter(aa,bb,ybeztr);
figure
plot(uczyste);
title('Dane wejsciowe-po filtracji')
%OPERACJE NA WYJ孋IU
%wgranie zmiennych do przestrzeni roboczej
load mm_lab_09_zad1b.mat;
%wyswietlenie danych pomiarowych z eksperymentu
y=yee_zad1; %wektor danych wyjsciowych
figure
subplot(2,2,1);
plot(y);
title('Dane wyjsciowe');
[ilew ilek]=size(y);
ybez0=y;
ybez0(isnan(y))=0;
%figure
subplot(2,2,2);
plot(ybez0);
title('Dane wyjsciowe-uzupelnione brakujace dane o 0');
%wyliczenie sredniej i odchylenia standardowego
ybez0sr=mean(ybez0);
ybez0os=std(ybez0);
%eliminacja brakujacych danych
for i=2:1:ilew-1
if ybez0(i)==0
ypop=ybez0(i-1);
a=i;
while ybez0(a)==0
a=a+1;
end
ynast=ybez0(a);
ybez0(i)=(ypop+ynast)/2;%(ybez0(i-1)+ybez0(i+1))/2;
end
end
%figure
subplot(2,2,3);
plot(ybez0);
title('Dane wyjsciowe-uzupelnione brakujace dane o srednia z poprzedniej i nastepnej');
%gdzie sa i ile jest zmiennych izolowanych
izol=abs(ybez0-ybez0sr)>3*ybez0os;
liczba_izol=sum(izol);
%eliminacja danych izolowanych
ybez0bi=ybez0; %wektor danych bez danych izolowanych
for i=2:1:ilew-1
if abs(ybez0bi(i)-ybez0sr)>3*ybez0os;
ybez0bi(i)=(ybez0bi(i-1)+ybez0bi(i+1))/2;
end
end
%figure
subplot(2,2,4);
plot(ybez0bi);
title('Dane wyjsciowe-eliminacja danych izolowanych-srednia z poprzedniej i nastepnej');
%usuniecie trendow
ybeztrl=detrend(ybez0bi);
%ybeztr=detrend(ybez0bi,'constant');
figure
plot(ybeztrl);
%filtracja
aa=[1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10];
bb=1;
yczyste=filter(aa,bb,ybeztrl);
figure
plot(yczyste);
%ESTYMACJA - zgodnie z poprzednim lab.
[ile_w ile_k]=size(uczyste);
yczyste1=yczyste(2:ile_w);
yczyste1(ile_w)=0;
liczba_wejsc=2;
U=zeros(ile_w,liczba_wejsc);
U(:,1)=uczyste';
U(:,2)=yczyste1';
b_est=(U'*U)^-1*U'*yczyste;
yest(1)=0;
for ii=2:1:100000
yest(ii)=b_est(1,1)*uczyste(ii)+b_est(2,1)*yest(ii-1);
end
yest=yest*b0;
figure;
plot(yest,'r');
title('Wartosci estymowane')
hold on
elseif wybor == 2
%OPERACJE NA WEJ孋IU
clear;
clc;
b0=4;
%wgranie zmiennych do przestrzeni roboczej
load mm_lab_09_zad2.mat;
%wyswietlenie danych pomiarowych z eksperymentu
y=uee_zad2; %wektor danych wejsciowych
%figure
subplot(2,2,1);
plot(y);
title('Dane wejsciowe');
[ilew ilek]=size(y);
ybez0=y;
ybez0(isnan(y))=0;
%figure
subplot(2,2,2);
plot(ybez0);
title('Dane wejsciowe-uzupelnione brakujace dane o 0');
%wyliczenie sredniej i odchylenia standardowego
ybez0sr=mean(ybez0);
ybez0os=std(ybez0);
%eliminacja brakujacych danych
for i=2:1:ilew-1
if ybez0(i)==0
ypop=ybez0(i-1);
a=i;
while ybez0(a)==0
a=a+1;
end
ynast=ybez0(a);
ybez0(i)=(ypop+ynast)/2;%(ybez0(i-1)+ybez0(i+1))/2;
end
end
%figure
subplot(2,2,3);
plot(ybez0);
title('Dane wejsciowe-uzupelnione brakujace dane o srednia z poprzedniej i nastepnej');
%wyliczenie sredniej i odchylenia standardowego
%gdzie sa i ile jest zmiennych izolowanych
izol=abs(ybez0-ybez0sr)>1.5*ybez0os;
liczba_izol=sum(izol);
%eliminacja danych izolowanych
ybez0bi=ybez0; %wektor danych bez danych izolowanych
for i=2:1:ilew-1
if abs(ybez0bi(i)-ybez0sr)>1.5*ybez0os;
ybez0bi(i)=(ybez0bi(i-1)+ybez0bi(i+1))/2;
end
end
%figure
subplot(2,2,4);
plot(ybez0bi);
title('Dane wejsciowe-eliminacja danych izolowanych-srednia z poprzedniej i nastepnej');
%usuwanie trendow i skladowych stalych
ybeztr=detrend(ybez0bi,'constant');
figure
plot(ybeztr);
title('Dane wejsciowe po usunieciu trendu')
%filtracja
aa=[1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10];
bb=1;
uczyste=filter(aa,bb,ybeztr);
figure
plot(uczyste);
title('Dane wejsciowe po filtracji')
%OPERACJE NA WYJ孋IU
%wgranie zmiennych do przestrzeni roboczej
load mm_lab_09_zad2.mat;
%wyswietlenie danych pomiarowych z eksperymentu
y=yee_zad2; %wektor danych wyjsciowych
%figure
subplot(2,2,1);
plot(y);
title('Dane wyjsciowe');
[ilew ilek]=size(y);
ybez0=y;
ybez0(isnan(y))=0;
%figure
subplot(2,2,2);
plot(ybez0);
title('Dane wyjsciowe-uzupelnione brakujace dane o 0');
%wyliczenie sredniej i odchylenia standardowego
ybez0sr=mean(ybez0);
ybez0os=std(ybez0);
%eliminacja brakujacych danych
for i=2:1:ilew-1
if ybez0(i)==0
ypop=ybez0(i-1);
a=i;
while ybez0(a)==0
a=a+1;
end
ynast=ybez0(a);
ybez0(i)=(ypop+ynast)/2;%(ybez0(i-1)+ybez0(i+1))/2;
end
end
%figure
subplot(2,2,3);
plot(ybez0);
title('Dane wyjsciowe-uzupelnione brakujace dane o srednia z poprzedniej i nastepnej');
%gdzie sa i ile jest zmiennych izolowanych
izol=abs(ybez0-ybez0sr)>3*ybez0os;
liczba_izol=sum(izol);
%eliminacja danych izolowanych
ybez0bi=ybez0; %wektor danych bez danych izolowanych
for i=2:1:ilew-1
if abs(ybez0bi(i)-ybez0sr)>3*ybez0os;
ybez0bi(i)=(ybez0bi(i-1)+ybez0bi(i+1))/2;
end
end
%figure
subplot(2,2,4);
plot(ybez0bi);
title('Dane wyjsciowe-eliminacja danych izolowanych-srednia z poprzedniej i nastepnej');
%usuwanie trendow i skladowych stalych
ybeztrl=detrend(ybez0bi);
figure
plot(ybeztrl);
title('Dane wyjsciowe po usunieciu trendu')
%filtracja
aa=[1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10];
bb=1;
yczyste=filter(aa,bb,ybeztrl);
figure
plot(yczyste);
title('Dane wyjsciowe po filtracji')
%ESTYMACJA
[ile_w ile_k]=size(uczyste);
yczyste1=yczyste(2:ile_w);
yczyste1(ile_w)=0;
yczyste2=yczyste1(2:ile_w);
yczyste2(ile_w)=0;
liczba_wejsc=3;
U=zeros(ile_w,liczba_wejsc);
U(:,1)=uczyste';
U(:,2)=yczyste1';
U(:,3)=yczyste2';
b_est=(U'*U)^-1*U'*yczyste;
y_est(1)=0;
y_est(2)=0;
for ii=3:1:100000
y_est(ii)=-b_est(1,1)*uczyste(ii)+b_est(2,1).*y_est(ii-1)+b_est(3,1)*y_est(ii-2);
end
y_est=y_est*b0;
figure;
plot(y_est,'r');
title('Wartosci estymowane')
hold on
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -