使用Matlab Slider更新多个图和计算

时间:2014-02-08 14:55:00

标签: matlab

我正在使用matlab尝试研究天线的远场辐射模式。基本上,我试图绘制x的3个不同函数,以及它们的傅立叶变换。我已经研究了如何编写一个脚本来计算三个不同分布的远场并绘制它们。

但是,在脚本中我使用变量'a'。我希望能够使用滑块实时更新变量。移动滑块时,会更改a,并重新计算使用a的所有计算,并刷新绘图。

我相信我必须将我的脚本更改为一个函数,并使用回调。我一直在尝试各种各样的东西,我设法得到一个更新a值的滑块,但它没有重新计算和重新绘制。

我的脚本如下。这是我第一次使用matlab,所以可能有点疯狂。

% -------  APERTURE FUNCTIONS -------

x = -5 : 0.001 : 5;  % Define the x axis
a = 1;               % Define aperture size
f1 = zeros(size(x)); % Initialise an aperture function
f2 = zeros(size(x)); % Initialise an aperture function
f3 = zeros(size(x)); % Initialise an aperture function

% Declaration of functions
for i = 1 : length(x) 
  if abs(x(i)) <= a/2
  f1(i) = 1;               % Rectangular Function
  f2(i) = cos(pi*x(i)/a);  % Cosine Function
  f3(i) = 1-2*abs(x(i))/a; % Triangular Function
  else 
  f1(i) = 0; 
  f2(i) = 0; 
  f3(i) = 0; 
  end 
end

figure;

subplot(2,3,1); plot(x,f1,'LineWidth',2); 
ylim([0 1.5]) 
xlabel('x (m)'); 
ylabel('f1(x)'); 
title('Rectangular Aperture Function');

subplot(2,3,2); plot(x,f2,'LineWidth',2); 
ylim([0 1.5]) 
xlabel('x (m)'); 
ylabel('f3(x)'); 
title('Cosine Aperture Function');

subplot(2,3,3); plot(x,f3,'LineWidth',2); 
ylim([0 1.5]) 
xlabel('x (m)'); 
ylabel('f2(x)'); 
title('Triangular Aperture Function');

%------------- FARFIELD CALCULATION ------------

u = [-4 : 0.01 : 4];  % Define the u axis
G1 = zeros(size(u));  % Initialise a Farfield function
G2 = zeros(size(u));  % Initialise a Farfield function
G3 = zeros(size(u));  % Initialise a Farfield function

for i = 1 : length(u) 
  G1(i) = trapz(x,f1.*exp(-j*2*pi*u(i)*x)); % Fourier Transform
  G2(i) = trapz(x,f2.*exp(-j*2*pi*u(i)*x)); % Fourier Transform 
  G3(i) = trapz(x,f3.*exp(-j*2*pi*u(i)*x)); % Fourier Transform 
end

subplot(2,3,4); 
plot(u,20*log(abs(G1)),'LineWidth',2);
axis([-4 4 -200 0]);
xlabel('u'); 
ylabel('|G(u)|'); 
title('Far-Field Magnitude of a Rectangular Function');

subplot(2,3,5); 
plot(u,20*log(abs(G2)),'LineWidth',2);
axis([-4 4 -200 0]);
xlabel('u'); 
ylabel('|G(u)|'); 
title('Far-Field Magnitude of a Cosine Function');

subplot(2,3,6); 
plot(u,20*log(abs(G3)),'LineWidth',2);
axis([-4 4 -200 0]);
xlabel('u'); 
ylabel('|G(u)|'); 
title('Far-Field Magnitude of a Triangular Function');

1 个答案:

答案 0 :(得分:0)

在我看来,您需要使用三个图和一个滑块创建一个简单的GUI。检查this MathWorks site以获取使用GUIDE创建GUI的简介。我想你会找到一些你想要做的例子。