how do i reverse a vector
Afficher commentaires plus anciens
so far i have this
function [Vout]=reverse(Vin)
Réponse acceptée
Plus de réponses (5)
Royi Avital
le 13 Juin 2011
This might work as well (For 1D Vectors):
vReversed = v(end:-1:1);
Good luck!
3 commentaires
Shweta Kanitkar
le 29 Mai 2013
v(end:-1:1) subtracts each element from v(end) by 1.
Walter Roberson
le 28 Juin 2013
Matt Eicholtz points out that Shweta's comment is incorrect; no subtraction is done, only indexing.
Cyrus David Pastelero
le 8 Juil 2020
This is what I am looking for. Thank you.
Walter Roberson
le 13 Juin 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
le 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 commentaires
Stephen23
le 28 Juil 2026 à 10:24
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
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!