You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
3.8KB

  1. clear;
  2. clc;
  3. fprintf('Bode diagram of the Fourier-box\n\n');
  4. fprintf('Figure 1: Bodediagram average measurement+SD\n\n');
  5. fprintf('N.B. SD=0 is not displayed in the graph!\n\n');
  6. fprintf('\nWARNING!This script looks for the file in the working directory.\n\n');
  7. f_name=input('Filename: ','s');
  8. [met]=dlmread(f_name,' ',0,0);
  9. if mean(met(1,:))==0;
  10. nr_met=0;
  11. end;
  12. if mean(met(1,:))~=0;
  13. size_met=size(met);
  14. nr_met=(size_met(1)-1)/2;
  15. nr_punt=size_met(2);
  16. f_m=met(1,:);
  17. for i=1:nr_met;
  18. for j=1:nr_punt;
  19. amp_met(i,j)=met(i+1,j);
  20. fase_met(i,j)=met(i+1+nr_met,j);
  21. end;
  22. end;
  23. if nr_met~=1;
  24. for i=1:nr_punt;
  25. av_amp(i)=mean(amp_met(:,i));
  26. av_log_amp(i)=20*log10(av_amp(i));
  27. av_fase(i)=mean(fase_met(:,i));
  28. end;
  29. sd_amp=std(amp_met,0,1);
  30. for i=1:nr_punt;
  31. sd_log_amp(i)=2/log(av_amp(i))*sd_amp(i);
  32. end;
  33. sd_fase=std(fase_met,0,1);
  34. else
  35. av_log_amp=20*log10(amp_met);
  36. av_fase=fase_met;
  37. sd_log_amp=zeros(1,nr_punt);
  38. sd_fase=zeros(1,nr_punt);
  39. end;
  40. end;
  41. min_amp=floor(min(av_log_amp-abs(sd_log_amp)));
  42. max_amp=ceil(max(av_log_amp+abs(sd_log_amp)));
  43. min_fase=floor(min(av_fase-abs(sd_fase)));
  44. max_fase=ceil(max(av_fase+abs(sd_fase)));
  45. if nr_met~=0;
  46. figure(1);
  47. set(clf,'PaperType','A4');
  48. set(clf,'Color',[1,1,1]);
  49. subplot(2,1,1);
  50. graf=semilogx(f_m,av_log_amp,'.-b','LineWidth',1);
  51. % legend([graf],'meting',3);
  52. hold on;
  53. width_sd=(log10(f_m(2))-log10(f_m(1)))/3;
  54. for i=1:nr_punt;
  55. if sd_log_amp(i)~=0;
  56. x=[f_m(i),f_m(i)];
  57. y=[av_log_amp(i)+sd_log_amp(i),av_log_amp(i)-sd_log_amp(i)];
  58. xl1=[10^(log(f_m(i))/log(10)-width_sd),10^(log(f_m(i))/log(10)+width_sd)];
  59. yl1=[av_log_amp(i)+sd_log_amp(i),av_log_amp(i)+sd_log_amp(i)];
  60. yl2=[av_log_amp(i)-sd_log_amp(i),av_log_amp(i)-sd_log_amp(i)];
  61. plot(x,y,'-b');
  62. plot(xl1,yl1,'-b');
  63. plot(xl1,yl2,'-b');
  64. end;
  65. end;
  66. hold off;
  67. ylabel('Amplitude [dB]','Fontsize',10);
  68. % grid bepaling
  69. startfm=floor(log10(f_m(1)));
  70. sizefm=size(f_m);
  71. endfm=ceil(log10(f_m(sizefm(2))));
  72. % xfm(1)=10^startfm;
  73. xfm(1)=f_m(1);
  74. i=startfm+1;
  75. countm=2;
  76. flag=0;
  77. while flag~=1;
  78. if xfm(countm-1)<f_m(nr_punt);
  79. xfm(countm)=10^(i);
  80. countm=countm+1;
  81. i=i+1;
  82. else flag=1;
  83. end;
  84. end;
  85. xfm(countm-1)=f_m(nr_punt);
  86. % set(gca,'XTick',xfm,'Fontsize',9);
  87. min_amp_met=floor(min(av_log_amp-abs(sd_log_amp)))-2;
  88. max_amp_met=ceil(max(av_log_amp+abs(sd_log_amp)))+2;
  89. set(gca,'Fontsize',9);
  90. axis([xfm(1),xfm(countm-1),min_amp_met,max_amp_met]);
  91. grid on;
  92. title('Bodediagram Fourierbox (Measurement)','Fontsize',10,'Fontweight','bold');
  93. subplot(2,1,2);
  94. graf=semilogx(f_m,av_fase,'.-b','LineWidth',1);
  95. % legend([graf],'meting',3);
  96. hold on;
  97. width_sd=(log10(f_m(2))-log10(f_m(1)))/3;
  98. for i=1:nr_punt;
  99. if sd_fase(i)~=0;
  100. x=[f_m(i),f_m(i)];
  101. y=[av_fase(i)+sd_fase(i),av_fase(i)-sd_fase(i)];
  102. xl1=[10^(log10(f_m(i))-width_sd),10^(log10(f_m(i))+width_sd)];
  103. yl1=[av_fase(i)+sd_fase(i),av_fase(i)+sd_fase(i)];
  104. yl2=[av_fase(i)-sd_fase(i),av_fase(i)-sd_fase(i)];
  105. plot(x,y,'-b');
  106. plot(xl1,yl1,'-b');
  107. plot(xl1,yl2,'-b');
  108. end;
  109. end;
  110. hold off;
  111. xlabel('Frequency [Hz]','Fontsize',10);
  112. ylabel('Fase [rad]','Fontsize',10);
  113. % set(gca, 'XTick',xfm,'Fontsize',9);
  114. min_fase_met=floor(min(av_fase-abs(sd_fase)));
  115. max_fase_met=ceil(max(av_fase+abs(sd_fase)))+2;
  116. set(gca,'Fontsize',9);
  117. axis([f_m(1),f_m(nr_punt),min_fase,max_fase]);
  118. grid on;
  119. end;