Find the first appearance of a number in a row.

15 ビュー (過去 30 日間)
SChow
SChow 2023 年 9 月 28 日
コメント済み: Voss 2023 年 9 月 28 日
Hi I have a matrix A from which I need to return a vector which contain the index of first occurence of a number say 2030 such that we get the matrix below
A = [0 0 0 2095 3030
0 2030 2030 2030 2030
0 0 2095 2055 2065
2065 2055 2050 2030 2030]
B=[5 2 0 4]
I tried using
for i=1:4
d=A(i,:);
targetval = 2030;
num_wanted = 2030;
xx=(find(d==targetval, num_wanted, 'first'))
end
which apparently does the job (inefficiently) , but I am confused on how to store the indices in a vector and if the value (2030) is not there in a row - then return 0.

採用された回答

Voss
Voss 2023 年 9 月 28 日
編集済み: Voss 2023 年 9 月 28 日
A = [0 0 0 2095 2030
0 2030 2030 2030 2030
0 0 2095 2055 2065
2065 2055 2050 2030 2030]
A = 4×5
0 0 0 2095 2030 0 2030 2030 2030 2030 0 0 2095 2055 2065 2065 2055 2050 2030 2030
targetval = 2030;
n_rows = size(A,1);
B = zeros(1,n_rows); % pre-allocate vector B with a zero for each row of A.
for i = 1:n_rows
d = A(i,:);
idx = find(d==targetval, 1, 'first'); % find the first occurrence of targetval in row i.
if ~isempty(idx) % if there is one, store it as element i of B;
B(i) = idx; % (otherwise element i of B remains 0).
end
end
disp(B);
5 2 0 4
  4 件のコメント
SChow
SChow 2023 年 9 月 28 日
Thanks, much much appreciated.
Voss
Voss 2023 年 9 月 28 日
You're welcome!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeArray Geometries and Analysis についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by