Asked by karishma koshy
on 7 Aug 2019

Hi all

I want to assign a set of vectors in place of zero to existing vectors (ventor_2). But I always want to check the the new set of vectors (newvector_2) does not have the number that exist in previous vector (vector_1)

Vector_1 = [ 1 2 3 4]

Vector_2 = [ 2 0 4 0 6 7 ] Newvector_2 = [ 2 5 4 8 6 7]

How can I do that

Thank you

Answer by Samatha Aleti
on 12 Aug 2019

Without logically going to each element you can use functions like find(), intersect(), setxor() for vectorization in achieving what you need. Here is how you can do it:

vector_1 = [ 1 2 3 4];

vector_2 = [ 2 0 4 0 6 7];

% x is the vector whose elements are to be added to vector_2

x = [1 2 5 8];

xcommon = intersect(x, vector_1);

vector_3 = setxor(x,xcommon);

idxZero = find(~ vector_2);

% Truncate additional elements

vector_3(length(idxZero)+1:length(vector_3)) = [];

vector_2(idxZero) = vector_3;

For detailed information on above functions, refer the following document links:

madhan ravi
on 12 Aug 2019

Where did x come from?

Samatha Aleti
on 12 Aug 2019

Sign in to comment.

Answer by madhan ravi
on 12 Aug 2019

Edited by madhan ravi
on 15 Sep 2019

newvector_2=vector_2;

ix=nnz(~vector_2);

v12=[vector_1,nonzeros(vector_2).'];

u=unique(v12);

d=setdiff(1:max(v12),v12);

newvector_2(~vector_2)=[d,max(v12)+(1:ix-numel(d))]

Sign in to comment.

Answer by Andrei Bobrov
on 12 Aug 2019

Let X - interval for input data in 'vector_2'

X = [0, 15];

x = setdiff(X(1):X(2),vector_1); % input data

newvector_2 = vector_2;

lo = vector_2 == 0;

n = sum(lo);

b = repmat(x,1,ceil(n/numel(x)));

newvector_2(lo) = b(randperm(numel(b),n));

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 4 Comments

## Guillaume (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/475314-how-to-assign-vectors-to-existing-vector#comment_732931

## Be Matlabi (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/475314-how-to-assign-vectors-to-existing-vector#comment_732932

## karishma koshy (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/475314-how-to-assign-vectors-to-existing-vector#comment_732933

## karishma koshy (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/475314-how-to-assign-vectors-to-existing-vector#comment_732935

Sign in to comment.