2014-02-08 26 views
1

我正在使用matlab來嘗試和調查天線的遠場輻射模式。基本上,我試圖繪製x的3個不同的函數,以及他們的傅里葉變換。我已經研究過如何編寫一個腳本來計算三種不同分佈的遠場並繪製它們。使用Matlab滑塊更新多個圖和計算

但是,在腳本中我使用變量'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'); 
+0

我建議你首先創建一個matlab函數文件,該函數在給定一些輸入參數的情況下計算你的函數。然後,在滑塊的另一個文件中創建一個回調函數。最後,你的回調將需要劇情處理,以便更新它們。試着讓它只與一個情節一起工作,然後應該很容易使它們都工作。 – jerad

回答

0

在我看來,你需要創建一個簡單的GUI與三個圖和滑塊。查看this MathWorks site瞭解如何使用GUIDE創建GUI。我想你會找到你想要做的一些例子。