replace the elements of a vector with an element sequence

1 Ansicht (letzte 30 Tage)
pavlos
pavlos am 5 Mär. 2014
Kommentiert: pavlos am 6 Mär. 2014
Hello,
Consider a 100x1 matrix with random values from 1 to 3.
How can replace all the values with an element sequence of 4 elements, such as:
all 1 with 0100
all 2 with 1001
all 3 with 0001
Thank you.
Best,
Pavlos

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 5 Mär. 2014
Bearbeitet: Andrei Bobrov am 5 Mär. 2014
A = [0 1 0 0;1 0 0 1;0 0 0 1];
B = randi(3,100,1);
out = A(B,:);
for negative values:
B2 = [-1 -0.5 -0.25];
[l0,ii] = ismember(B,B2);
out = nan(numel(B),size(A,2));
idx = ii(l0);
out(l0,:) = A(idx,:);
  2 Kommentare
pavlos
pavlos am 5 Mär. 2014
Hello,
How can I do the same if the 100x1 matrix contains negative values.
For example, instead of 1, 2, 3 consider -1, -0.5, -0.25
Thank you.
Andrei Bobrov
Andrei Bobrov am 5 Mär. 2014
Please see answer by Jos

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jos (10584)
Jos (10584) am 5 Mär. 2014
% values V(k) in B should be mapped to row A(k,:)
A = [0 1 0 0;1 0 0 1;0 0 0 1]
V = [-1 -0.5 -0.25]
B = [-1 -0.5 -1 -0.25 -1 -0.25 -0.5 -1 -1]
[~,k] = ismember(B,V)
out = A(k,:)

Community Treasure Hunt

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

Start Hunting!

Translated by