replace not selected value by zero

1 view (last 30 days)
Hi I have 10 values. my code select 3 values, for example, if x=[1 2 3 4 5 6 7 8 9 10] and my code select [1 3 5] i want a code to do this x= [1 0 3 0 5 0 0 0 0 0]?.

Accepted Answer

Star Strider
Star Strider on 28 Jan 2018
This works:
x=[1 2 3 4 5 6 7 8 9 10];
ToKeep = [1 3 5];
idx = ismember(x, ToKeep);
Result = x .* idx
Result =
1 0 3 0 5 0 0 0 0 0
  2 Comments
Image Analyst
Image Analyst on 28 Jan 2018
Totally different than what I did and that made me see the ambiguity. We need Hasan to clarify if the [1,3,5] are the indexes of x that should be kept (like I assumed), or the values of x that should be kept (like you assumed).
Star Strider
Star Strider on 28 Jan 2018
‘I have 10 values. my code select 3 values,’
I interpret ‘values’ as indicating array elements.

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 28 Jan 2018
Here's one way:
x=[1 2 3 4 5 6 7 8 9 10]
mask = [1 3 5]
x2 = zeros(1, length(x)); % Initialize x2
x2(mask) = x(mask) % Pull over values in the mask from x and put them in the same column.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!