I need to map a binary array to 2 differnet values corresponding to 0 & 1

1 view (last 30 days)
A= zeros(320,320); A(60:180,60:180)=1;
lets say I wanna make all 1's = 2+3i and all 0's equals to 8-4i.
What would be the syntax to map them to corresponding values. Thanks

Accepted Answer

dpb
dpb on 29 Jun 2018
Edited: dpb on 30 Jun 2018
One of a zillion ways...
C=complex(2*ones(size(A)),3*ones(size(A)));
C(C==0) = 8-4i;
Another less "deadahead" but one-liner...
C=interp1([0 1],[8-4i 2+3i],A,'nearest');
ADDENDUM
A variation on the latter is simple lookup...requires the temporary vector, though.
v=[8-4i 2+3i]; % the values
C=v(A+1); % convert logical to array indices

More Answers (0)

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!