====== Różnice ====== Różnice między wybraną wersją a wersją aktualną.
aniss2016_17 [2018/01/08 17:55] miller [Lab. 7 (2017)] |
aniss2016_17 [2018/01/17 09:21] (aktualna) miller [Lab. 7 (2017)] |
||
---|---|---|---|
Linia 220: | Linia 220: | ||
* Wywołanie funkcji aproksymującej: | * Wywołanie funkcji aproksymującej: | ||
- | + | ||
- | [estimates, model] = fitcurveQ0(t,q); | + | % Dane pomiarowe: |
+ | q = [2.40 2.56 2.56 2.56 2.72 2.88 3.20 4.04 5.56 6.20 9.30 14.70 ... | ||
+ | 18.20 21.80 27.80 30.20 31.40 30.20 29.00 27.80 25.40 24.20 23.00 21.80 ... | ||
+ | 21.80 20.60 19.40 19.40 18.20 17.00 17.00 15.90 14.70 14.70 13.50 13.50 ... | ||
+ | 12.30 12.30 11.10 11.10 10.50 10.50 10.50 9.90 9.90 9.90 9.30 9.30 ... | ||
+ | 9.30 8.70 8.70 8.70 8.70 8.70 8.10 8.10 8.10 8.10 7.34 6.96 ... | ||
+ | 6.96 6.96 6.96 6.96 6.58 7.34 6.96 6.96 6.96]; | ||
+ | t = 1:52; q=q(18:end); | ||
% | % | ||
- | plot(t, q, '*'); hold on | + | [estimates, model] = fitcurveQ0(t,q); % aproksymacja nieliniowa |
- | [sse, FittedCurve] = model(estimates); | + | [sse, FittedCurve] = model(estimates); % wykres znalezionej aproksymacji |
- | plot(xdata, FittedCurve, 'r') | + | plot(t, q, '*',t, FittedCurve, 'ro') |
% | % | ||
- | xlabel('t') | + | xlabel('t'), ylabel('q'), title(['Fitting to function ', func2str(model)]); |
- | ylabel('q') | + | |
- | title(['Fitting to function ', func2str(model)]); | + | |
legend('data', ['fit using ', func2str(model)]) | legend('data', ['fit using ', func2str(model)]) | ||
- | hold off | ||
* Aproksymacja funkcją z większą liczbą parametrów | * Aproksymacja funkcją z większą liczbą parametrów | ||
Linia 256: | Linia 260: | ||
3. **Aproksymacja wielomianowa - kryterium wyboru stopnia wielomianu**: | 3. **Aproksymacja wielomianowa - kryterium wyboru stopnia wielomianu**: | ||
- | clear, close all | + | clear, close all, format short, format compact |
t = 0:0.001:1; y = sin(2*pi*t); % zależność aproksymowana | t = 0:0.001:1; y = sin(2*pi*t); % zależność aproksymowana | ||
tz = 0:0.05:1; | tz = 0:0.05:1; | ||
Linia 266: | Linia 270: | ||
figure(1), plot(t,y,'r',tp,yp,'o',t_test,y_test,'x'), hold on, | figure(1), plot(t,y,'r',tp,yp,'o',t_test,y_test,'x'), hold on, | ||
% | % | ||
- | err = zeros(1,10); err_t = zeros(1,10); % tablice błędów | + | err_trening = zeros(1,10); err_test = zeros(1,10); % tablice błędów |
for n = 1:10 | for n = 1:10 | ||
p = polyfit(tp,yp,n); % p - współczynniki wielomianu | p = polyfit(tp,yp,n); % p - współczynniki wielomianu | ||
ypa = polyval(p,tp); % wartości funkcji aproksymującej | ypa = polyval(p,tp); % wartości funkcji aproksymującej | ||
- | dy = ypa-yp; err(n) = sqrt((dy*dy')/11), % błąd w punktach treningowych | + | dy = ypa-yp; err_trening(n) = sqrt((dy*dy')/11), % błąd w punktach treningowych |
% | % | ||
y_test_a = polyval(p,t_test); % wartości f.aproks. w punktach testowych | y_test_a = polyval(p,t_test); % wartości f.aproks. w punktach testowych | ||
dy_test = y_test_a-y_test; | dy_test = y_test_a-y_test; | ||
- | err_t(n) = sqrt((dy_test*dy_test')/10), % błąd w punktach testowych | + | err_test(n) = sqrt((dy_test*dy_test')/10), % błąd w punktach testowych |
% | % | ||
plot(t,polyval(p,t)), pause, | plot(t,polyval(p,t)), pause, | ||
Linia 280: | Linia 284: | ||
hold off | hold off | ||
% | % | ||
- | figure(2), plot(1:10,err,'ro-',1:10,err_t,'bx-'); | + | figure(2), plot(1:10,err_trening,'ro-',1:10,err_test,'bx-'); |
xlabel('stopien wielomianu') | xlabel('stopien wielomianu') | ||
legend('blad w p. treningowych','blad w p. testowych') | legend('blad w p. treningowych','blad w p. testowych') | ||
+ | |||
+ | ====== Terminy zaliczeń (2017/18) ====== | ||
+ | |||
+ | Drugi termin: 31 stycznia 2018. | ||
+ | Trzeci termin: 7 lutego 2018. | ||
+ | (Godziny - do ustalenia) | ||