% 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(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)