Replacing multiple values at specific indices in a matrix with a single value
이전 댓글 표시
Hi,
I have a 91282x1 (d) array with a lot of different values. I would like to replace certain values (all at multiple indices) with 1 (there is no value of 1 in the original matrix) and the rest with zeros- but in a much more efficient way. Here's what I have
d(d==7201 | d==7205 | d=7207 | d==7208 | d==7209 | d==7210 | d==7215)=1;
d.(d~=1)=0
I know this is really short but I have to do this for a lot and I'm wondering if there's a more efficient way to make the mask by using zeros and then ID'ing the appropriate indices... or something
Thanks
채택된 답변
추가 답변 (1개)
ismember() will return a logical array the same size as 'd'. If you need ones and zeros rather than true and false, you can convert that to double.
d0 = ismember(d,[7201 7205 7207 7208 7209 7210 7215]);
% If you need double rather than logical
d0 = double(ismember(d,[7201 7205 7207 7208 7209 7210 7215]); );
카테고리
도움말 센터 및 File Exchange에서 Logical에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!