範囲を指定して最大値を求める方法

조회 수: 73 (최근 30일)
匡彬 高橋
匡彬 高橋 2023년 1월 18일
댓글: 匡彬 高橋 2023년 1월 24일
2列の行列から、1列目において範囲を指定し、2列目の最大値とその時の1列目を求めたいのです。
例:
1 13
2 115
3 14
4 21
5 42
6 63
7 413
8 100
9 734
上のような2列9行の行列から、1列目で2から7までの範囲を指定し、"最大値413, その時の1列目は7"となるように求めたいです。
  댓글 수: 3
匡彬 高橋
匡彬 高橋 2023년 1월 22일
一列目は単調増加ですが、行番号とは異なります。
Atsushi Ueno
Atsushi Ueno 2023년 1월 23일
>一列目は単調増加ですが、行番号とは異なります
であれば、@交感神経優位なあかべぇさんの回答でOKですね。

댓글을 달려면 로그인하십시오.

채택된 답변

交感神経優位なあかべぇ
該当するデータを抽出する例を記述しました。
A = [1 13;2 115;3 14;4 21;5 42;6 63;7 413;8 100;9 734] % 例のデータ作成
A = 9×2
1 13 2 115 3 14 4 21 5 42 6 63 7 413 8 100 9 734
btwn2_7Idx = A(:,1) >= 2 & A(:,1) <=7; % 1列目の2から7までの範囲を指定
B = A(btwn2_7Idx, :); % 指定した行の抽出
[~, maxIdx] = max(B(:,2)); % 2列目が最大値の行番号の検索
maxRow = B(maxIdx, :) % 検索した行の抽出
maxRow = 1×2
7 413
  댓글 수: 1
匡彬 高橋
匡彬 高橋 2023년 1월 24일
こちらのプログラムで思った通りの結果が得られました。ありがとうございます。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Hernia Baby
Hernia Baby 2023년 1월 21일
まずはデータを作成します
data = [1 13
2 115
3 14
4 21
5 42
6 63
7 413
8 100
9 734];
もし1列目が行番号なら以下のようにできます
data2 = data(2:7,2);
max_num = max(data2);
idx = data(:,2) == max_num
idx = 9×1 logical array
0 0 0 0 0 0 1 0 0
fprintf('2~7行目での最大値は%i(%i行目)',data(idx,2),data(idx,1))
2~7行目での最大値は413(7行目)

카테고리

Help CenterFile Exchange에서 行列および配列에 대해 자세히 알아보기

제품


릴리스

R2015b

Community Treasure Hunt

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

Start Hunting!