⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polar_interference.m

📁 beamforming for MIMO OFDM
💻 M
字号:
% polar_interference.m:
% Polar plot of amplitudes interfering to create beam-formed response.
% This script loops over various choices of #elements, tranducer spacing,
% and relative phase delay, to create a set of plots which are saved into
% *.png files in the current directory.
% This script calls file s.m for function S().
%
% Andy Ganse, APL-UW (Seattle), 2003
% aganse@apl.washington.edu


% set choices of values to loop over in creating plots:
N=[3 5];   % number of transducer elements
d=[5 10];  % spacing between elements (radians)
p=[-10 -7 -5 -2 0 2 5 7 10];  % phase delay (radians)

% a good size of polar plot:
maxradius=201;

% do single-element case separately first, before looping:
f=S(1,0,0);
% Matlab does not have a polar version of imagesc() that I am aware of, so
% loop over all pixels in a square plot, mapping angle/radius pairs to pixel:
for x=1:(2*maxradius)
  for y=1:(2*maxradius)
    % assumes 1,1 at lower left, but in matlab plot it's top left, so rot90 later
    a=mod(round(360*atan2(y-maxradius,x-maxradius)/(2*pi)),360);
    r=round(sqrt((x-maxradius)^2+(y-maxradius)^2));
    if(a>=1 & a<=361 & r>=1 & r<=maxradius) F(x,y)=f(a,r);
    else F(x,y)=0;
    end;
  end;
end;
imagesc( rot90(F) );  % because math assumed 1,1 was at lower left, not top left
axis square;
title('One element, no phase delay');
disp('printing file n1d0p0.png');
eval(sprintf('print -dpng n1d0p0.png'));


% Now loop over the rest of the cases:
for i=1:2
  for j=1:2
    for k=1:9
      f=S( N(i), d(j), p(k) );
      % Matlab does not have a polar version of imagesc() that I am aware of, so
      % loop over all pixels in a square plot, mapping angle/radius pairs to pixel:
      for x=1:(2*maxradius)
        for y=1:(2*maxradius)
          % assumes 1,1 at lower left, but in matlab plot it's top left, so rot90 later
          a=mod(round(360*atan2(y-maxradius,x-maxradius)/(2*pi)),360);
          r=round(sqrt((x-maxradius)^2+(y-maxradius)^2));
          if(a>=1 & a<=361 & r>=1 & r<=maxradius) F(x,y)=f(a,r);
          else F(x,y)=0;
          end;
        end;
      end;
      imagesc( rot90(F) );  % because math assumed 1,1 was lower left, not top left
      axis square;
      title([num2str(N(i)) ' elements, spacing = ' num2str(d(j)) ...
          ', relative phase delay = ' num2str(p(k))]);
      filenm = ['n' num2str(N(i)) 'd' num2str(d(j)) 'p' num2str(p(k)) '.png'];
      disp(['printing file ' filenm]);
      eval(sprintf('print -dpng ''%s''',filenm));
    end;
  end;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -