라이브 편집기를 사용하여 대화형 양식 만들기
라이브 편집기에서 대화형 양식이나 간단한 앱을 만들어 작고 반복 가능한 작업을 수행할 수 있습니다. 이러한 양식이나 앱을 만드는 경우 대화형 방식 컨트롤을 사용하여 입력을 요청하고 작업을 수행할 수 있습니다. 서식 지정된 텍스트, 컨트롤, 결과만 사용자에게 표시하려면 코드를 숨기십시오.
이 예제에서는 사용자의 입력값에 따라 계산을 완료하는 기본 대화형 양식을 라이브 편집기에서 만드는 방법을 보여줍니다. 이 양식에서는 사용자에게 입력을 요청하는 드롭다운 목록과 숫자 슬라이더를 사용하고 사용자가 제공한 입력값으로 계산을 실행하고 그래프를 플로팅하는 버튼을 사용합니다.
태양 전지판 출력 추정기 양식을 살펴보고 사용해 보려면 MATLAB®에서 이 예제를 여십시오.
양식 만들기
MATLAB에서 이 예제를 열어 태양 전지판 출력 추정기 양식의 복사본을 열 수 있습니다. 양식을 직접 다시 만들려면 SolarPanelEstimatorForm.mlx
라는 이름의 라이브 스크립트를 만듭니다. 그런 다음 설명 텍스트와 코드를 추가하고 컨트롤을 구성하고 코드를 숨깁니다.
코드 추가하기
패널의 위치, 크기 및 효율성에 따라 태양 전지판 세트의 출력값을 계산하려면 태양 전지판 출력 추정기 양식에 대한 코드 섹션의 설명 텍스트와 코드를 복사합니다.
컨트롤 구성하기
이 양식에서는 사용자에게 입력을 요청하는 드롭다운 목록과 숫자 슬라이더 및 사용자가 제공한 입력값으로 계산을 실행하고 그래프를 플로팅하는 버튼을 사용합니다.
사용자가 코드를 복사하면 컨트롤이 현재 값으로 대체됩니다. 컨트롤을 코드에 다시 추가하기 위해 location 변수 값을 드롭다운 목록으로 바꾸고 pSize
및 eff
변수 값을 숫자 슬라이더로 바꿉니다. 그런 다음 컨트롤을 마우스 오른쪽 버튼으로 클릭하고 컨트롤 구성을 선택한 후 다음과 같이 컨트롤 옵션을 지정하여 컨트롤을 구성합니다.
location 드롭다운 목록 — Label을
Location:
으로 설정하고 Item labels 및 Item values를 일련의 위치 및 해당 좌표로 설정합니다. Run 실행 옵션을Nothing
으로 설정합니다.pSize 슬라이더 — Label을
Panel Size (m^2):
으로 설정하고 Min과 Max를 각각0
과40
으로 설정합니다. Run 실행 옵션을Nothing
으로 설정합니다.eff 슬라이더 — Label을
Panel Efficiency:
로 설정하고 Min과 Max를 각각0
과100
으로 설정합니다. Run 실행 옵션을Nothing
으로 설정합니다.
버튼을 코드에 다시 추가하려면 코드의 끝에 버튼을 삽입합니다. 그런 다음 버튼을 마우스 오른쪽 버튼으로 클릭하고 컨트롤 구성을 선택하여 버튼을 구성합니다. Label을 Calculate
로 설정하고 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")