how do i reverse a vector
Show older comments
so far i have this
function [Vout]=reverse(Vin)
Accepted Answer
More Answers (5)
Royi Avital
on 13 Jun 2011
This might work as well (For 1D Vectors):
vReversed = v(end:-1:1);
Good luck!
3 Comments
Shweta Kanitkar
on 29 May 2013
v(end:-1:1) subtracts each element from v(end) by 1.
Walter Roberson
on 28 Jun 2013
Matt Eicholtz points out that Shweta's comment is incorrect; no subtraction is done, only indexing.
Cyrus David Pastelero
on 8 Jul 2020
This is what I am looking for. Thank you.
Walter Roberson
on 13 Jun 2011
2 votes
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.
goga
on 19 Nov 2011
1 vote
use fliplr()
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 Comments
Stephen23
about 1 hour ago
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
Categories
Find more on Neighborhood and Block Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!