Changing elements of row after certain element

Hi,
I have a m*n matrix where some of rows are like these for exmaple
[-1,-0.65,-0.45,0,0.3,0.8,1,0.4,0.2,-0.1]
Now I need to make new row as follows
[-1,-0.65,-0.45,0,0.3,0.8,1,0,0,0]
that is once any of the elements in row becomes 1 after that all the elements will be zero.

回答 (2 件)

Dyuman Joshi
Dyuman Joshi 2022 年 7 月 14 日
編集済み: Dyuman Joshi 2022 年 7 月 14 日

1 投票

For a matrix run a loop through the rows
x=[-1,-0.65,-0.45,0,0.3,0.8,1,0.4,0.2,-0.1]
x = 1×10
-1.0000 -0.6500 -0.4500 0 0.3000 0.8000 1.0000 0.4000 0.2000 -0.1000
%Code edited according to the question
x(find(x==1,1)+1:end)=0
x = 1×10
-1.0000 -0.6500 -0.4500 0 0.3000 0.8000 1.0000 0 0 0

3 件のコメント

Rajesh
Rajesh 2022 年 7 月 14 日
Thanks. Working well
Jan
Jan 2022 年 7 月 14 日
This deletes all elements after a 1. The OP asked for setting the values to 0.
find() can reply an empty matrix or a vector. This works, but only, because the colon operator ignores all elements of the vector except for the 1st one. This is at least confusing.
Dyuman Joshi
Dyuman Joshi 2022 年 7 月 14 日
You are correct, Jan, my code doesn't do what OP asked. The code written is according to what I had in mind at the time.
I will edit my code accordingly.

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

Jan
Jan 2022 年 7 月 14 日
編集済み: Jan 2022 年 7 月 14 日

1 投票

x = [-1,-0.65,-0.45,0,0.3,0.8,1,0.4,0.2,-0.1];
idx = find(x == 1, 1);
if ~isempty(idx)
x(idx + 1:end) = 0;
end

カテゴリ

ヘルプ センター および File ExchangeLine Plots についてさらに検索

質問済み:

2022 年 7 月 14 日

編集済み:

2022 年 7 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by