Convert contents of array into index

15 views (last 30 days)
I have an array. 1x3127 double which contains the indexes of another array. I want to use those index values to index another array and make those points =0
So for example,
col = [21 34 56 78 54 99];
l(col) = 0; % where l is another array for which I want l(21),l(34),l(56) = 0 etc.
I tried using the following code snippet but it does not work.
col = find(l<0);
for ii = 1:length(col)
a= cell2mat(ii);
l(a) = 0;
Please help! Thanks!

Accepted Answer

Alexandra Harkai
Alexandra Harkai on 15 Nov 2016
Your first code should work.
l = ones(1, 10000); % make sure this is bigger than the largest index col will specify
col = [21 34 56 78 54 99];
l(col) = 0; % this makes the 21st, 34th, 56th, etc. elements 0
  1 Comment
Alexandra Harkai
Alexandra Harkai on 15 Nov 2016
Your second code does not work because col is not used anywhere.
col = find(l<0); % this is a 0-1 vector, 1 indicating where l has a negative element
for ii = 1:length(col) % length of col is the number of negative elements in l
a = cell2mat(ii); % this doesn't use col at all
l(a) = 0; % so this puts the 0s in the wrong places
This essentially counts how many negative elements are there in vector l (let's say n), then changes the first n elements of l to 0.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!