how do i reverse a vector
古いコメントを表示
so far i have this
function [Vout]=reverse(Vin)
採用された回答
その他の回答 (5 件)
Royi Avital
2011 年 6 月 13 日
This might work as well (For 1D Vectors):
vReversed = v(end:-1:1);
Good luck!
3 件のコメント
Shweta Kanitkar
2013 年 5 月 29 日
v(end:-1:1) subtracts each element from v(end) by 1.
Walter Roberson
2013 年 6 月 28 日
Matt Eicholtz points out that Shweta's comment is incorrect; no subtraction is done, only indexing.
Cyrus David Pastelero
2020 年 7 月 8 日
This is what I am looking for. Thank you.
Walter Roberson
2011 年 6 月 13 日
2 投票
fliplr() or flipud()
... But I suspect this is a class assignment. You will need to use your knowledge of MATLAB indexing and looping to work out your assignments for yourself.
v = [1 2 3 4 5];
reversed = flip(v);
disp(reversed);
v = [10, 20, 30, 40, 50];
n = length(v);
for i = 1:n
rev(i) = v(n - i + 1);
end
disp('Reversed vector:');
disp(rev);
2 件のコメント
Stephen23
約7時間 前
Doing this in a loop is very inefficient: avoid this approach!
It's also incorrect in some cases, since rev was not preallocated.
v = (1:5).'
n = length(v);
for i = 1:n
rev(i) = v(n - i + 1);
end
rev
whos v rev
In this case rev is the wrong size/shape! Compare with one of the recommended approach:
flippedV = flip(v)
whos flippedV v
In fact, the lack of preallocation may make the code error. Let me show the recommended approach first then show the error case. Because the previous section of code effectively "preallocated" rev, I need to clear it to simulate running the code in isolation.
v = zeros(1, 0);
flippedV = flip(v)
clear rev % Simulate running the code without preallocation
n = length(v);
for i = 1:n
rev(i) = v(n - i + 1);
end
rev % doesn't exist, so this will error
カテゴリ
ヘルプ センター および File Exchange で Resizing and Reshaping Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!