나는 파 필드의 방사 패턴을 조사하기 위해 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');
먼저 입력 인자가 주어진다면 함수를 계산하는 matlab 함수 파일을 만드는 것이 좋습니다. 그런 다음 슬라이더의 다른 파일에 콜백 함수를 만듭니다. 마지막으로 콜백 함수는 플롯 핸들을 업데이트해야합니다. 처음에는 하나의 줄거리로만 작업 해보십시오. 그런 다음 모든 작업을 쉽게 처리 할 수 있어야합니다. – jerad