Problems with for loop

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 ?

回答 (4 件)

Andrei Bobrov
Andrei Bobrov 2011 年 6 月 3 日

1 投票

more
Q = zeros(1,2*length(q));
Q(1:2:end) = q
Walter Roberson
Walter Roberson 2011 年 6 月 3 日

0 投票

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 件のコメント

Sean de Wolski
Sean de Wolski 2011 年 6 月 3 日
I think you need to transpose Q before the reshape.
Q = reshape(Q.',1,[]);
Walter Roberson
Walter Roberson 2011 年 6 月 3 日
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
Walter Roberson 2011 年 6 月 3 日
or
Q = reshape([q(:).';zeros(1,numel(q))],1,[]);
Sean de Wolski
Sean de Wolski 2011 年 6 月 3 日

0 投票

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.
cyberdyne
cyberdyne 2011 年 6 月 4 日

0 投票

Thanks at all !!! ^^

この質問は閉じられています。

質問済み:

2011 年 6 月 3 日

閉鎖済み:

2021 年 8 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by