任意の値が配列の中にあるか検索したい

以下の2つの配列z1,z2があるとします。
z1=[18.0 17.3 16.6 ; 16.1 15.3 15.4];
z2=[14.3 15.7 16.0 ; 16.9 17.5 15.8];
この中から任意の値(仮に15.2とします)が存在するかを検索し、
①存在する場合には、どの配列の何行何列かを出力結果として出力、
②存在しない場合には、任意の値から最も近い値(誤差範囲 ±0.2)を出力し、その値はどの配列の何行何列かを出力結果として出力
する方法はありますでしょうか。
(②の例)
任意の値 15.2 が存在していないため、任意の値から最も近い値 15.4 (誤差範囲 ±0.2)を出力し、その値は z2 の2行3列に存在していることを出力結果として出力したい。

댓글 수: 1

Y.T
Y.T 2022년 12월 16일
本文9行目
✕ その値は z2 の2行3列に存在
〇 その値は z1 の2行3列に存在
文章に誤りがありました。

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

 채택된 답변

Hernia Baby
Hernia Baby 2022년 12월 16일

0 개 추천

関数にしました
z1=[18.0 17.3 16.6 ; 16.1 15.3 15.4];
z2=[14.3 15.7 16.0 ; 16.9 17.5 15.8];
num = 15.2;
th = 0.2;
I1 = MySearch(z1,num,th)
I1 = 1×2
2 2
I2 = MySearch(z2,num,th)
I2 = 0×2 empty double matrix
関数について
function I = MySearch(x,num,th)
idx1 = abs(x - num) <= th; % 誤差範囲内に数字があるか判別
[~,idx2] = min(abs(x - num),[],'all'); % 差が最小となる点を探す
idx3 = x(idx2) == x; % indexの形にする
idx = idx1 & idx3; % 誤差範囲内かつ最小が最近傍
[r,c] = find(idx); % 行と列をさがす
I = [r,c]; % 1つにまとめる
end

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

Y.T
2022년 12월 16일

답변:

2022년 12월 16일

Community Treasure Hunt

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

Start Hunting!