2014-02-08 3 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

3 개의 플롯과 슬라이더로 간단한 GUI를 만들어야합니다. GUIDE를 사용하여 GUI를 만드는 방법에 대한 소개는 this MathWorks site을 확인하십시오. 나는 당신이하려고하는 것에 대한 몇 가지 예를 발견 할 것이라고 생각합니다.