Flip a vector using for

I'm a MATLAB beginner in need of some help. I need to flip a vector so that it goes in reverse. Basically, [1 2 3] becomes [3 2 1]; Here's what I've got:
vector=[1:12]
A=0;
j=12;
for i=1:12
A=vector(i);
vector(i)=vector(j);
vector(j)=A;
j=j-1;
end
vector
I'm not really sure why it's not working since this seems like the logical way to do it.

回答 (2 件)

Andrei Bobrov
Andrei Bobrov 2018 年 3 月 15 日
編集済み: Andrei Bobrov 2018 年 3 月 15 日

0 投票

out = flip(yourvector);
with loop (no use)
out = zeros(size(yourvector));
k = 1;
for ii = numel(yourvector):-1:1
out(k) = yourvector(ii);
k = k + 1;
end

1 件のコメント

The Canary Cry
The Canary Cry 2018 年 3 月 15 日
Yes, I know there a functions to do it for me but I need to do it using for.

サインインしてコメントする。

James Tursa
James Tursa 2018 年 3 月 15 日
編集済み: James Tursa 2018 年 3 月 15 日

0 投票

Because you are exchanging elements, you wind up flipping the vector twice, which gets it back to the original state. Instead, just run your for-loop through 1/2 of the vector so that the elements are only flipped once. E.g.,
for i=1:floor(numel(vector)/2)

1 件のコメント

The Canary Cry
The Canary Cry 2018 年 3 月 15 日
Oh! Yes, I see where I went wrong, thank you.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2018 年 3 月 15 日

編集済み:

2018 年 3 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by