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

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

Atsushi Ueno
Atsushi Ueno 2023년 1월 22일
1列目の値は単調増加ですか?
>1列目で2から7までの範囲を指定し
この文が如何様にも取れます。
匡彬 高橋
匡彬 高橋 2023년 1월 22일
一列目は単調増加ですが、行番号とは異なります。
Atsushi Ueno
Atsushi Ueno 2023년 1월 23일
>一列目は単調増加ですが、行番号とは異なります
であれば、@交感神経優位なあかべぇさんの回答でOKですね。

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

 채택된 답변

1 개 추천

該当するデータを抽出する例を記述しました。
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일

0 개 추천

まずはデータを作成します
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行目)

카테고리

도움말 센터File Exchange에서 動的システム モデル에 대해 자세히 알아보기

제품

릴리스

R2015b

Community Treasure Hunt

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

Start Hunting!