MATLAB Answers

0

How to insert a new vector to matrix in every iteration?

Asked by skinny pete on 18 May 2019
Latest activity Commented on by Sulaymon Eshkabilov on 18 May 2019
Hi everyone,
I try to form a matrix that gets the vector elements by using for loop. In other words, I want to save the for loop result in a matrix. You can see my code below and what I want.
for x=1:1:3
for y=4:1:5
z = [x y]'
????
end
end
out =
1 1 2 2 3 3
4 5 4 5 4 5
Could you help me about this 2x6 matrix, please?

  0 Comments

Sign in to comment.

2 Answers

Answer by madhan ravi
on 18 May 2019
Edited by madhan ravi
on 18 May 2019
 Accepted Answer

Trivially done without a loop:
out = [repelem(x,1:numel(x));repmat(y,1,numel(x))]
With loop:
x=1:3;
y=4:5;
ctr=1;
out=zeros(2,numel(x)+numel(y)); % preallocate!
for k=1:numel(x)
for l=1:numel(y)
out(:,ctr) = [x(k) ; y(l)];
ctr=ctr+1;
end
end
Gives:
>> out
out =
1 1 2 2 3 3
4 5 4 5 4 5

  3 Comments

Thank you for your answer Mr. Ravi. It works well. The purpose of the find this matrix is to plot a polygon using x and y coordinates. When I did it, I got the polygon that I do not want with several intersections due to array of the elements in the out matrix. You can see the below. So, How can I arrange of the elements' array to get smooth polygon. Do you have any idea?Screen Shot 2019-05-18 at 1.24.05 AM.png
pgon = polyshape([out(1,:)], [out(2,:)]);
plot(pgon)
grid on
No I don’t and I don’t see how that’s related to the question you originally asked. You'd be better off posting a new question.
ok i will ask it a new asking page

Sign in to comment.


Answer by Sulaymon Eshkabilov on 18 May 2019
Edited by Sulaymon Eshkabilov on 18 May 2019

This one works:
x = [1 1 2 2 3 3];
y= [4 5 4 5 4 5];
z = zeros(2, numel(x));
for ii=1:numel(x)
z(:,ii)=[x(ii), y(ii)];
end

  4 Comments

Show 1 older comment
And ofcourse you're a genius :)
I just pointed out the fault which was there and there is no need to get angry with the fact being exposed. If it’s hard just ignore else try to accept the mistake and change it.

Sign in to comment.