Main Content

라이브 편집기를 사용하여 대화형 양식 만들기

라이브 편집기에서 대화형 양식이나 간단한 앱을 만들어 작고 반복 가능한 작업을 수행할 수 있습니다. 이러한 양식이나 앱을 만드는 경우 대화형 방식 컨트롤을 사용하여 입력을 요청하고 작업을 수행할 수 있습니다. 서식 지정된 텍스트, 컨트롤, 결과만 사용자에게 표시하려면 코드를 숨기십시오.

이 예제에서는 사용자의 입력값에 따라 계산을 완료하는 기본 대화형 양식을 라이브 편집기에서 만드는 방법을 보여줍니다. 이 양식에서는 사용자에게 입력을 요청하는 드롭다운 목록과 숫자 슬라이더를 사용하고 사용자가 제공한 입력값으로 계산을 실행하고 그래프를 플로팅하는 버튼을 사용합니다.

태양 전지판 출력 추정기 양식을 살펴보고 사용해 보려면 MATLAB®에서 이 예제를 여십시오.

Solar Panel Output Estimator form, with code hidden, showing sample input selections and the resulting calculation and output plot

양식 만들기

MATLAB에서 이 예제를 열어 태양 전지판 출력 추정기 양식의 복사본을 열 수 있습니다. 양식을 직접 다시 만들려면 SolarPanelEstimatorForm.mlx라는 이름의 라이브 스크립트를 만듭니다. 그런 다음 설명 텍스트와 코드를 추가하고 컨트롤을 구성하고 코드를 숨깁니다.

코드 추가하기

패널의 위치, 크기 및 효율성에 따라 태양 전지판 세트의 출력값을 계산하려면 태양 전지판 출력 추정기 양식에 대한 코드 섹션의 설명 텍스트와 코드를 복사합니다.

컨트롤 구성하기

이 양식에서는 사용자에게 입력을 요청하는 드롭다운 목록과 숫자 슬라이더 및 사용자가 제공한 입력값으로 계산을 실행하고 그래프를 플로팅하는 버튼을 사용합니다.

사용자가 코드를 복사하면 컨트롤이 현재 값으로 대체됩니다. 컨트롤을 코드에 다시 추가하기 위해 location 변수 값을 드롭다운 목록으로 바꾸고 pSizeeff 변수 값을 숫자 슬라이더로 바꿉니다. 그런 다음 컨트롤을 마우스 오른쪽 버튼으로 클릭하고 컨트롤 구성을 선택한 후 다음과 같이 컨트롤 옵션을 지정하여 컨트롤을 구성합니다.

  • location 드롭다운 목록 — LabelLocation:으로 설정하고 Item labelsItem values를 일련의 위치 및 해당 좌표로 설정합니다. Run 실행 옵션을 Nothing으로 설정합니다.

  • pSize 슬라이더 — LabelPanel Size (m^2):으로 설정하고 MinMax를 각각 040으로 설정합니다. Run 실행 옵션을 Nothing으로 설정합니다.

  • eff 슬라이더 — LabelPanel Efficiency:로 설정하고 MinMax를 각각 0100으로 설정합니다. Run 실행 옵션을 Nothing으로 설정합니다.

Configuration windows for the drop-down list and the two sliders

버튼을 코드에 다시 추가하려면 코드의 끝에 버튼을 삽입합니다. 그런 다음 버튼을 마우스 오른쪽 버튼으로 클릭하고 컨트롤 구성을 선택하여 버튼을 구성합니다. LabelCalculate로 설정하고 Run 실행 옵션을 Current section으로 설정합니다. 사용자가 버튼을 누르면 현재 섹션의 코드가 실행되고 드롭다운 목록 및 슬라이더의 현재 값에 따라 계산이 업데이트됩니다.

코드 숨기기

코드를 숨기고 컨트롤과 결과만 표시한 상태에서 예제를 양식 형태로 보려면 보기 탭으로 이동한 다음 코드 숨기기를 클릭합니다. 이제 사용자는 드롭다운 목록에서 항목을 선택하고 슬라이더를 조정하고 버튼을 클릭해 결과를 보는 등 양식과 상호 작용할 수 있습니다. 라이브 편집기는 사용자가 제공한 입력값에 따라 태양 전지판 출력 추정값을 계산합니다.

태양 전지판 출력 추정기 양식에 대한 코드

이 섹션에서는 설명 텍스트, 코드, 샘플 결과를 포함하여 SolarPanelEstimatorForm.mlx 라이브 스크립트 파일의 전체 내용을 제공합니다.

태양 전지판 출력 추정기

전지판의 위치를 지정합니다.

% Calculate Solar Time
location = [40.714 -74.006 -5];
lambda = location(2);                                      % Longitude
phi = location(1);                                         % Latitude                        
UTCoff = location(3);                                      % UTC offset 
if(UTCoff < 0)
    TZ = "UTC" + num2str(UTCoff);
else
    TZ = "UTC+" + num2str(UTCoff);
end

january1  = datetime(2016,1,1,"TimeZone",TZ);              % January 1st

localYear = 2018;
localMonth = 6;
localDay = 1;
localHour = 12;
localTime = datetime(localYear,localMonth,localDay,localHour,0,0,"TimeZone",TZ);

d = caldays(between(january1,localTime,"Day"));            % Day of year
solarCorr = solarCorrection(d,lambda,UTCoff);              % Correction to local time
solarTime = localTime + minutes(solarCorr);

% Calculate Solar Declination and Elevation
delta = asind(sind(23.45)*sind(360*(d - 81)/365));          % Declination
omega = 15*(solarTime.Hour + solarTime.Minute/60 - 12);     % Hour angle
alpha = asind(sind(delta)*sind(phi) + ...                   % Elevation
     cosd(delta)*cosd(phi)*cosd(omega));

% Calculate Air Mass and Solar Radiation
AM = 1/(cosd(90-alpha) + 0.50572*(6.07955+alpha)^-1.6354);
sRad = 1.353*0.7^(AM^0.678);                                % kW/m^2

% Calculate Solar Radiation on Fixed Panels
gamma = acosd((sind(delta)*cosd(phi) - cosd(delta)*sind(phi)*cosd(omega))/cosd(alpha));
if (hour(solarTime) >= 12) && (omega >= 0)
    gamma = 360 - gamma;
end
beta = 180;                                                 % Panel azimuth
tau = 35;                                                   % Panel tilt
pRad = sRad*max(0,(cosd(alpha)*sind(tau)*cosd(beta-gamma) + sind(alpha)*cosd(tau)));

전지판의 크기와 효율성 값을 지정합니다.

% Calculate Panel Size and Efficiency
pSize = 32;                          % Panel size in m^2
eff = 25;                         % Panel efficiency
pElec = eff*pSize*pRad;                                    % Panel electric output in kW
 

결과:

disp("Expected electrical output = " + num2str(pElec) + " kW")
Expected electrical output = 717.5021 kW
% Calculate Power Generation Over Time
isFixed = 1;
date = datetime(localYear,localMonth,localDay,"TimeZone",TZ);                      
[times,sRad,pRad] = hourlyPanelRadiation(date,lambda,phi,UTCoff,tau,beta,isFixed);

plot(times,sRad,times,pRad)
title("Solar and Panel Radiation for " + string(date,"mmmm dd yyyy"))
xlabel("Hour of Day");
ylabel("Radiation, kW/m^2")
legend("Available Solar Radiation","Solar Radiation on Panel","Location","South")

Figure contains an axes object. The axes object with title Solar and Panel Radiation for 0000 01 2018, xlabel Hour of Day, ylabel Radiation, kW/m Squared baseline contains 2 objects of type line. These objects represent Available Solar Radiation, Solar Radiation on Panel.

관련 항목