replace the elements of a vector with an element sequence

3 Ansichten (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,:)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by