|
|
|
@@ -0,0 +1,336 @@ |
|
|
|
% clear; |
|
|
|
% clc; |
|
|
|
|
|
|
|
fprintf('Bode diagram of the RC-circuit\n\n'); |
|
|
|
fprintf('Figure 1: Bode diagram theory+asymptote + average measurement\n') |
|
|
|
fprintf('Figure 2: Bode diagram average measurement+SD + theory\n'); |
|
|
|
fprintf('Figure 3: Bode diagram average measurement+SD\n\n'); |
|
|
|
fprintf('N.B. SD=0 is not displayed in the figures!\n\n'); |
|
|
|
|
|
|
|
% fprintf('\nWatch out! This script searches the file in "D:\"\n\n'); |
|
|
|
% |
|
|
|
% f_name=input('Filename: ','s'); |
|
|
|
% f_name1=sprintf('%s%s',f_name,'_theorie'); |
|
|
|
% f_name2=sprintf('%s%s',f_name,'_meting'); |
|
|
|
% |
|
|
|
% wd=cd; |
|
|
|
% cd 'D:\' |
|
|
|
% |
|
|
|
% [th]=dlmread(f_name1,' ',0,0); |
|
|
|
% [met]=dlmread(f_name2,' ',0,0); |
|
|
|
% |
|
|
|
% cd(wd); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f_th=th(1,:); |
|
|
|
amp_th=th(2,:); |
|
|
|
fase_th=th(3,:); |
|
|
|
asym=th(4,:); |
|
|
|
if mean(met(1,:))==0; |
|
|
|
nr_met=0; |
|
|
|
end; |
|
|
|
|
|
|
|
if mean(met(1,:))~=0; |
|
|
|
size_met=size(met); |
|
|
|
nr_met=(size_met(1)-1)/2; |
|
|
|
nr_punt=size_met(2); |
|
|
|
f_m=met(1,:); |
|
|
|
|
|
|
|
for i=1:nr_met; |
|
|
|
for j=1:nr_punt; |
|
|
|
amp_met(i,j)=met(i+1,j); |
|
|
|
fase_met(i,j)=met(i+1+nr_met,j); |
|
|
|
end; |
|
|
|
end; |
|
|
|
if nr_met~=1; |
|
|
|
for i=1:nr_punt; |
|
|
|
av_amp(i)=mean(amp_met(:,i)); |
|
|
|
av_log_amp(i)=20*log10(av_amp(i)); |
|
|
|
av_fase(i)=mean(fase_met(:,i)); |
|
|
|
end; |
|
|
|
sd_amp=std(amp_met,0,1); |
|
|
|
for i=1:nr_punt; |
|
|
|
if sd_amp(i)==0; |
|
|
|
sd_log_amp(i)=0; |
|
|
|
elseif av_amp(i)==1; |
|
|
|
av_amp(i)=1.0001; |
|
|
|
else |
|
|
|
sd_log_amp(i)=2/log(av_amp(i))*sd_amp(i); |
|
|
|
end; |
|
|
|
end; |
|
|
|
sd_fase=std(fase_met,0,1); |
|
|
|
else |
|
|
|
av_log_amp=20*log10(amp_met); |
|
|
|
av_fase=fase_met; |
|
|
|
sd_log_amp=zeros(1,nr_punt); |
|
|
|
sd_fase=zeros(1,nr_punt); |
|
|
|
end; |
|
|
|
end; |
|
|
|
|
|
|
|
figure(1); |
|
|
|
set(clf,'PaperType','A4'); |
|
|
|
set(clf,'Color',[1,1,1]); |
|
|
|
%set(clf,'PaperPosition',[1.13386 3.97146 5.5 4.125]); |
|
|
|
subplot(2,1,1); |
|
|
|
if mean(met(1,:))~=0; |
|
|
|
graf=semilogx(f_th,amp_th,'r',f_th,asym,'g',f_m,av_log_amp,'.-b','LineWidth',1); |
|
|
|
legend([graf],'theory','asymp.','measurement',3); |
|
|
|
else |
|
|
|
graf=semilogx(f_th,amp_th,'r',f_th,asym,'g','LineWidth',1); |
|
|
|
legend([graf],'theory','asymp.',3); |
|
|
|
end; |
|
|
|
ylabel('Amplitude [dB]','Fontsize',10) |
|
|
|
|
|
|
|
% grid bepaling |
|
|
|
startf=floor(log10(f_th(1))); |
|
|
|
sizef=size(f_th); |
|
|
|
endf=ceil(log10(f_th(sizef(2)))); |
|
|
|
xf(1)=10^startf; |
|
|
|
i=startf+1; |
|
|
|
count=2; |
|
|
|
while i<=endf; |
|
|
|
xf(count)=10^(i); |
|
|
|
count=count+1; |
|
|
|
i=i+1; |
|
|
|
end; |
|
|
|
set(gca, 'XTick',xf,'Fontsize',9); |
|
|
|
|
|
|
|
if mean(met(1,:))~=0; |
|
|
|
min_amp_th=floor(min(amp_th)); |
|
|
|
min_amp_met=floor(min(av_log_amp-abs(sd_log_amp))); |
|
|
|
min_amp=min(min_amp_th,min_amp_met); |
|
|
|
max_amp_th=ceil(max(amp_th)); |
|
|
|
max_amp_met=ceil(max(av_log_amp+abs(sd_log_amp))); |
|
|
|
max_amp=max(max_amp_th,max_amp_met)+2; |
|
|
|
else |
|
|
|
min_amp=floor(min(amp_th)); |
|
|
|
max_amp=ceil(max(amp_th))+2; |
|
|
|
end; |
|
|
|
|
|
|
|
axis([10^startf,10^endf,min_amp,max_amp]); |
|
|
|
grid on; |
|
|
|
title('Bode diagram RC-circuit','Fontsize',10,'Fontweight','bold'); |
|
|
|
|
|
|
|
subplot(2,1,2); |
|
|
|
if mean(met(1,:))~=0; |
|
|
|
graf=semilogx(f_th,fase_th,'r',f_m,av_fase,'.-b','LineWidth',1); |
|
|
|
legend([graf],'theory','measurement',3); |
|
|
|
else |
|
|
|
graf=semilogx(f_th,fase_th,'LineWidth',1); |
|
|
|
legend([graf],'theory',3); |
|
|
|
end; |
|
|
|
xlabel('Frequency [Hz]','Fontsize',10); |
|
|
|
ylabel('Phase [rad]','Fontsize',10); |
|
|
|
set(gca, 'XTick',xf,'Fontsize',9); |
|
|
|
|
|
|
|
if mean(met(1,:))~=0; |
|
|
|
min_fase_th=floor(min(fase_th)); |
|
|
|
min_fase_met=floor(min(av_fase-abs(sd_fase))); |
|
|
|
min_fase=min(min_fase_th,min_fase_met); |
|
|
|
max_fase_th=ceil(max(fase_th)); |
|
|
|
max_fase_met=ceil(max(av_fase+abs(sd_fase))); |
|
|
|
max_fase=max(max_fase_th,max_fase_met); |
|
|
|
else |
|
|
|
min_fase=floor(min(fase_th)); |
|
|
|
max_fase=ceil(max(fase_th)); |
|
|
|
end; |
|
|
|
|
|
|
|
axis([10^startf,10^endf,min_fase,max_fase]); |
|
|
|
grid on; |
|
|
|
|
|
|
|
if nr_met~=0; |
|
|
|
figure(2); |
|
|
|
set(clf,'PaperType','A4'); |
|
|
|
set(clf,'Color',[1,1,1]); |
|
|
|
% set(clf,'PaperPosition',[1.13386 3.97146 5.5 4.125]); |
|
|
|
subplot(2,1,1); |
|
|
|
graf=semilogx(f_m,av_log_amp,'.-b',f_th,amp_th,'-r','LineWidth',1); |
|
|
|
legend([graf],'measurement','theory',3); |
|
|
|
hold on; |
|
|
|
width_sd=(log10(f_m(2))-log10(f_m(1)))/3; |
|
|
|
for i=1:nr_punt; |
|
|
|
if sd_log_amp(i)~=0; |
|
|
|
x=[f_m(i),f_m(i)]; |
|
|
|
y=[av_log_amp(i)+sd_log_amp(i),av_log_amp(i)-sd_log_amp(i)]; |
|
|
|
xl1=[10^(log(f_m(i))/log(10)-width_sd),10^(log(f_m(i))/log(10)+width_sd)]; |
|
|
|
yl1=[av_log_amp(i)+sd_log_amp(i),av_log_amp(i)+sd_log_amp(i)]; |
|
|
|
yl2=[av_log_amp(i)-sd_log_amp(i),av_log_amp(i)-sd_log_amp(i)]; |
|
|
|
plot(x,y,'-b'); |
|
|
|
plot(xl1,yl1,'-b'); |
|
|
|
plot(xl1,yl2,'-b'); |
|
|
|
end; |
|
|
|
end; |
|
|
|
hold off; |
|
|
|
ylabel('Amplitude [dB]','Fontsize',10); |
|
|
|
|
|
|
|
% grid bepaling |
|
|
|
startfm=floor(log10(f_m(1))); |
|
|
|
sizefm=size(f_m); |
|
|
|
endfm=ceil(log10(f_m(sizefm(2)))); |
|
|
|
% xfm(1)=10^startfm; |
|
|
|
xfm(1)=f_m(1); |
|
|
|
i=startfm+1; |
|
|
|
countm=2; |
|
|
|
flag=0; |
|
|
|
while flag~=1; |
|
|
|
if xfm(countm-1)<f_m(nr_punt); |
|
|
|
xfm(countm)=10^(i); |
|
|
|
countm=countm+1; |
|
|
|
i=i+1; |
|
|
|
else flag=1; |
|
|
|
end; |
|
|
|
end; |
|
|
|
xfm(countm-1)=f_m(nr_punt); |
|
|
|
% set(gca,'XTick',xfm,'Fontsize',9); |
|
|
|
|
|
|
|
fmin_th=f_th(1); |
|
|
|
count_min=1; |
|
|
|
while fmin_th<f_m(1); |
|
|
|
count_min=count_min+1; |
|
|
|
fmin_th=f_th(count_min); |
|
|
|
end; |
|
|
|
|
|
|
|
size_fth=size(f_th); |
|
|
|
size_fm=size(f_m); |
|
|
|
fmax_th=f_th(size_fth(2)); |
|
|
|
count_max=size_fth(2); |
|
|
|
while fmax_th>f_m(size_fm(2)); |
|
|
|
count_max=count_max-1; |
|
|
|
fmax_th=f_th(count_max); |
|
|
|
end; |
|
|
|
|
|
|
|
amp_th2=amp_th(count_min:count_max); |
|
|
|
min_amp_met=floor(min(av_log_amp-abs(sd_log_amp))); |
|
|
|
min_amp_th2=floor(min(amp_th2)); |
|
|
|
max_amp_met=ceil(max(av_log_amp+abs(sd_log_amp))); |
|
|
|
max_amp_th2=ceil(max(amp_th2)); |
|
|
|
min_amp_met2=floor(min(min_amp_met,min_amp_th2))-2; |
|
|
|
max_amp_met2=ceil(max(max_amp_met,max_amp_th2))+2; |
|
|
|
|
|
|
|
set(gca,'Fontsize',9); |
|
|
|
axis([xfm(1),xfm(countm-1),min_amp_met2,max_amp_met2]); |
|
|
|
grid on; |
|
|
|
title('Bode diagram RC-circuit','Fontsize',10,'Fontweight','bold'); |
|
|
|
|
|
|
|
subplot(2,1,2); |
|
|
|
|
|
|
|
graf=semilogx(f_m,av_fase,'.-b',f_th,fase_th,'-r','LineWidth',1); |
|
|
|
legend([graf],'measurement','theory',3); |
|
|
|
hold on; |
|
|
|
width_sd=(log10(f_m(2))-log10(f_m(1)))/3; |
|
|
|
for i=1:nr_punt; |
|
|
|
if sd_fase(i)~=0; |
|
|
|
x=[f_m(i),f_m(i)]; |
|
|
|
y=[av_fase(i)+sd_fase(i),av_fase(i)-sd_fase(i)]; |
|
|
|
xl1=[10^(log10(f_m(i))-width_sd),10^(log10(f_m(i))+width_sd)]; |
|
|
|
yl1=[av_fase(i)+sd_fase(i),av_fase(i)+sd_fase(i)]; |
|
|
|
yl2=[av_fase(i)-sd_fase(i),av_fase(i)-sd_fase(i)]; |
|
|
|
plot(x,y,'-b'); |
|
|
|
plot(xl1,yl1,'-b'); |
|
|
|
plot(xl1,yl2,'-b'); |
|
|
|
end; |
|
|
|
end; |
|
|
|
hold off; |
|
|
|
|
|
|
|
xlabel('Frequency [Hz]','Fontsize',10); |
|
|
|
ylabel('Phase [rad]','Fontsize',10); |
|
|
|
% set(gca, 'XTick',xfm,'Fontsize',9); |
|
|
|
|
|
|
|
min_fase_met=floor(min(av_fase-abs(sd_fase))); |
|
|
|
max_fase_met=ceil(max(av_fase+abs(sd_fase))); |
|
|
|
fase_th2=fase_th(count_min:count_max); |
|
|
|
min_fase_th2=floor(min(fase_th2)); |
|
|
|
max_fase_th2=ceil(max(fase_th2)); |
|
|
|
min_fase_met2=floor(min(min_fase_met,min_fase_th2))-1; |
|
|
|
max_fase_met2=ceil(max(max_fase_met,max_fase_th2)); |
|
|
|
|
|
|
|
set(gca,'Fontsize',9); |
|
|
|
axis([f_m(1),f_m(nr_punt),min_fase_met2,max_fase_met2]); |
|
|
|
grid on; |
|
|
|
end; |
|
|
|
|
|
|
|
if nr_met~=0; |
|
|
|
figure(3); |
|
|
|
set(clf,'PaperType','A4'); |
|
|
|
set(clf,'Color',[1,1,1]); |
|
|
|
% set(clf,'PaperPosition',[1.13386 3.97146 5.5 4.125]); |
|
|
|
subplot(2,1,1); |
|
|
|
graf=semilogx(f_m,av_log_amp,'.-b','LineWidth',1); |
|
|
|
% legend([graf],'meting',3); |
|
|
|
hold on; |
|
|
|
width_sd=(log10(f_m(2))-log10(f_m(1)))/3; |
|
|
|
for i=1:nr_punt; |
|
|
|
if sd_log_amp(i)~=0; |
|
|
|
x=[f_m(i),f_m(i)]; |
|
|
|
y=[av_log_amp(i)+sd_log_amp(i),av_log_amp(i)-sd_log_amp(i)]; |
|
|
|
xl1=[10^(log(f_m(i))/log(10)-width_sd),10^(log(f_m(i))/log(10)+width_sd)]; |
|
|
|
yl1=[av_log_amp(i)+sd_log_amp(i),av_log_amp(i)+sd_log_amp(i)]; |
|
|
|
yl2=[av_log_amp(i)-sd_log_amp(i),av_log_amp(i)-sd_log_amp(i)]; |
|
|
|
plot(x,y,'-b'); |
|
|
|
plot(xl1,yl1,'-b'); |
|
|
|
plot(xl1,yl2,'-b'); |
|
|
|
end; |
|
|
|
end; |
|
|
|
hold off; |
|
|
|
ylabel('Amplitude [dB]','Fontsize',10); |
|
|
|
|
|
|
|
% grid bepaling |
|
|
|
startfm=floor(log10(f_m(1))); |
|
|
|
sizefm=size(f_m); |
|
|
|
endfm=ceil(log10(f_m(sizefm(2)))); |
|
|
|
% xfm(1)=10^startfm; |
|
|
|
xfm(1)=f_m(1); |
|
|
|
i=startfm+1; |
|
|
|
countm=2; |
|
|
|
flag=0; |
|
|
|
while flag~=1; |
|
|
|
if xfm(countm-1)<f_m(nr_punt); |
|
|
|
xfm(countm)=10^(i); |
|
|
|
countm=countm+1; |
|
|
|
i=i+1; |
|
|
|
else flag=1; |
|
|
|
end; |
|
|
|
end; |
|
|
|
xfm(countm-1)=f_m(nr_punt); |
|
|
|
% set(gca,'XTick',xfm,'Fontsize',9); |
|
|
|
|
|
|
|
min_amp_met=floor(min(av_log_amp-abs(sd_log_amp)))-2; |
|
|
|
max_amp_met=ceil(max(av_log_amp+abs(sd_log_amp)))+2; |
|
|
|
|
|
|
|
set(gca,'Fontsize',9); |
|
|
|
axis([xfm(1),xfm(countm-1),min_amp_met,max_amp_met]); |
|
|
|
grid on; |
|
|
|
title('Bode diagram RC-circuit (measurement)','Fontsize',10,'Fontweight','bold'); |
|
|
|
|
|
|
|
subplot(2,1,2); |
|
|
|
|
|
|
|
graf=semilogx(f_m,av_fase,'.-b','LineWidth',1); |
|
|
|
% legend([graf],'meting',3); |
|
|
|
hold on; |
|
|
|
width_sd=(log10(f_m(2))-log10(f_m(1)))/3; |
|
|
|
for i=1:nr_punt; |
|
|
|
if sd_fase(i)~=0; |
|
|
|
x=[f_m(i),f_m(i)]; |
|
|
|
y=[av_fase(i)+sd_fase(i),av_fase(i)-sd_fase(i)]; |
|
|
|
xl1=[10^(log10(f_m(i))-width_sd),10^(log10(f_m(i))+width_sd)]; |
|
|
|
yl1=[av_fase(i)+sd_fase(i),av_fase(i)+sd_fase(i)]; |
|
|
|
yl2=[av_fase(i)-sd_fase(i),av_fase(i)-sd_fase(i)]; |
|
|
|
plot(x,y,'-b'); |
|
|
|
plot(xl1,yl1,'-b'); |
|
|
|
plot(xl1,yl2,'-b'); |
|
|
|
end; |
|
|
|
end; |
|
|
|
hold off; |
|
|
|
|
|
|
|
xlabel('Frequency [Hz]','Fontsize',10); |
|
|
|
ylabel('Phase [rad]','Fontsize',10); |
|
|
|
% set(gca, 'XTick',xfm,'Fontsize',9); |
|
|
|
|
|
|
|
min_fase_met=floor(min(av_fase-abs(sd_fase))); |
|
|
|
max_fase_met=ceil(max(av_fase+abs(sd_fase)))+2; |
|
|
|
|
|
|
|
set(gca,'Fontsize',9); |
|
|
|
axis([f_m(1),f_m(nr_punt),min_fase,max_fase]); |
|
|
|
grid on; |
|
|
|
end; |