Problems with for loop
Info
This question is closed. Reopen it to edit or answer.
Show older comments
Hi,
I've a column vector q with 137 elements. I want generate a row vector Q
Q=[q(i) 0] taking elements of q one by one. I've tried by a for loop in this way:
for i=1:137
Q=[q(i) 0];
end
but it returns only the last element of q. This's q(137) in Q.
How can i set it for all elements of q ?
Answers (4)
Andrei Bobrov
on 3 Jun 2011
more
Q = zeros(1,2*length(q));
Q(1:2:end) = q
Walter Roberson
on 3 Jun 2011
Q = reshape([q(:),zeros(numel(q),1)],1,[]);
or
Q = q(:);
Q(1,2) = 0; %expands to 2 columns
Q = reshape(Q,1,[]); %row vector
3 Comments
Sean de Wolski
on 3 Jun 2011
I think you need to transpose Q before the reshape.
Q = reshape(Q.',1,[]);
Walter Roberson
on 3 Jun 2011
Ah, you are right. Okay, that leads to
Q = q(:).';
Q(2,1) = 0;
Q = reshape(Q,1,[]);
or
Q = reshape([q(:),zeros(numel(q),1)].',1,[]);
Walter Roberson
on 3 Jun 2011
or
Q = reshape([q(:).';zeros(1,numel(q))],1,[]);
Sean de Wolski
on 3 Jun 2011
To fix this you would need:
for ii = 1:137 %don't use i, it's the sqrt(-1)
Q(ii*2-1:ii*2) = [q(ii) 0];
end
Walter's solution is the best way to do this, however.
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!