フィルターのクリア

Flip a vector using for

6 ビュー (過去 30 日間)
The Canary Cry
The Canary Cry 2018 年 3 月 15 日
編集済み: Andrei Bobrov 2018 年 3 月 15 日
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 日
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 日
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.

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

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by