Convert contents of array into index
9 views (last 30 days)
Show older comments
Kash022
on 15 Nov 2016
Commented: Alexandra Harkai
on 15 Nov 2016
Hello,
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;
end
Please help! Thanks!
0 Comments
Accepted Answer
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
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
end
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.
More Answers (0)
See Also
Categories
Find more on Operators and Elementary Operations 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!