74 views (last 30 days)

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

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:

Samatha Aleti
on 12 Aug 2019

Sign in to comment.

madhan ravi
on 12 Aug 2019

Edited: 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.

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.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 4 Comments

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

## Direct link to this comment

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

⋮## Direct link to this comment

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

Sign in to comment.