메트랩 사용문의 "각 변수에 대해 조건을 충족하는 값의 평균값, 최대값, 최소값 구하기"

조회 수: 1 (최근 30일)
주희
주희 2022년 11월 21일
답변: Angelo Yeo 2023년 7월 7일
<질문>
1행에 bold체는 변수(7개)이며, 2행부터는 각변수의 값입니다.
보안상 데이터 이미지 삽입이나 첨부가 어려운점 양해부탁드립니다.
1. temperature-10C일때, 각 포지션에서 E1의 평균값(position1~4E1값의 평균), 최대값, 최소값을 구하여 excel file a, b열에 입력한다. 명력어 사용방법에 대해 여쭤봅니다
2. temperature -10C일때, E1의 평균값, 최대값, 최소값을갖는 포지션을 확인하여 excel file c, d열에 입력한다. 명령어 사용방법에 대해 여쭤봅니다
<예시 Data>
Position Temperature Time E1 E2 E3 E4
1 -10 0 15.8 52.3 66.5 66.5
1 0 10 11.3 40.1 45.1 45.1
1 30 20 12.7 26.2 55.7 55.7
1 60 30 13.0 23.3 58.5 58.5
2 -10 0 13.9 22.4 58.0 58.0
2 0 10 17.8 51.3 56.0 56.0
2 30 20 15.9 29.8 55.6 55.6
2 60 30 16.4 28.1 55.3 55.3
3 -10 0 17.0 26.3 54.9 54.9
3 0 10 17.5 24.6 54.6 54.6
3 30 20 18.0 22.8 54.3 54.3
3 60 30 18.5 21.1 54.0 54.0
4 -10 0 19.0 19.3 53.7 53.7
4 0 10 19.6 17.6 53.4 53.4
4 30 20 20.1 15.9 53.1 53.1
4 60 30 20.6 14.1 52.8 52.8

답변 (1개)

Angelo Yeo
Angelo Yeo 2023년 7월 7일
clear;
temp = [...
1 -10 0 15.8000000000000 52.3000000000000 66.5000000000000 66.5000000000000
1 0 10 11.3000000000000 40.1000000000000 45.1000000000000 45.1000000000000
1 30 20 12.7000000000000 26.2000000000000 55.7000000000000 55.7000000000000
1 60 30 13 23.3000000000000 58.5000000000000 58.5000000000000
2 -10 0 13.9000000000000 22.4000000000000 58 58
2 0 10 17.8000000000000 51.3000000000000 56 56
2 30 20 15.9000000000000 29.8000000000000 55.6000000000000 55.6000000000000
2 60 30 16.4000000000000 28.1000000000000 55.3000000000000 55.3000000000000
3 -10 0 17 26.3000000000000 54.9000000000000 54.9000000000000
3 0 10 17.5000000000000 24.6000000000000 54.6000000000000 54.6000000000000
3 30 20 18 22.8000000000000 54.3000000000000 54.3000000000000
3 60 30 18.5000000000000 21.1000000000000 54 54
4 -10 0 19 19.3000000000000 53.7000000000000 53.7000000000000
4 0 10 19.6000000000000 17.6000000000000 53.4000000000000 53.4000000000000
4 30 20 20.1000000000000 15.9000000000000 53.1000000000000 53.1000000000000
4 60 30 20.6000000000000 14.1000000000000 52.8000000000000 52.8000000000000];
myTbl = table;
myTbl.Position = temp(:, 1);
myTbl.Temperature = temp(:, 2);
myTbl.Time = temp(:, 3);
myTbl.E1 = temp(:, 4);
myTbl.E2 = temp(:, 5);
myTbl.E3 = temp(:, 6);
myTbl.E4 = temp(:, 7);
%% 1
%{
1. temperature-10C일때, 각 포지션에서 E1의 평균값(position1~4의 E1값의 평균),
최대값, 최소값을 구하여 excel file a행, b열에 입력한다. 명력어 사용방법에 대해 여쭤봅니다
%}
E1_Pos1_mean = mean(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 1));
E1_Pos2_mean = mean(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 2));
E1_Pos3_mean = mean(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 3));
E1_Pos4_mean = mean(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 4));
E1_Pos1_max = max(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 1));
E1_Pos2_max = max(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 2));
E1_Pos3_max = max(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 3));
E1_Pos4_max = max(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 4));
E1_Pos1_min = min(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 1));
E1_Pos2_min = min(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 2));
E1_Pos3_min = min(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 3));
E1_Pos4_min = min(myTbl.E1(myTbl.Temperature == -10 & myTbl.Position == 4));
mtxToExcel = [E1_Pos1_mean, E1_Pos1_max, E1_Pos1_min;
E1_Pos2_mean, E1_Pos2_max, E1_Pos2_min;
E1_Pos3_mean, E1_Pos3_max, E1_Pos3_min;
E1_Pos4_mean, E1_Pos4_max, E1_Pos4_min];
writematrix(mtxToExcel, "q1.xlsx", "Range", "B1") % A행 B열이 무엇인지 알 수 없음.
%% 2
%{
2. temperature -10C일때, E1의 평균값, 최대값, 최소값을갖는 포지션을 확인하여
excel file c행, d열에 입력한다. 명령어 사용방법에 대해 여쭤봅니다
%}
% 평균값을 갖는 포지션이라는 것은 없음.
idxNegative10 = find(myTbl.Temperature == -10); % 온도가 -10도 인 것들의 인덱스
[~, idxMinAmongNegative10] = min(myTbl.E1(idxNegative10)); % 온도가 -10도 인 인덱스들 중에 몇 번째가 최솟값인가
[~, idxMaxAmongNegative10] = max(myTbl.E1(idxNegative10)); % 온도가 -10도 인 인덱스들 중에 몇 번째가 최댓값인가
minRow = idxNegative10(idxMinAmongNegative10);
maxRow = idxNegative10(idxMaxAmongNegative10);
writematrix([minRow; maxRow], "q2.xlsx", "D3")

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!