Respuesta aceptada

Youssef  Khmou
Youssef Khmou el 29 de Mayo de 2013

2 votos

hi,
To reverse a vector try the function ' wrev' , here is an example :
r=wrev(1:4)
If you to control the degree of reverse/shifting try 'circshift' function.

2 comentarios

Matthew Eicholtz
Matthew Eicholtz el 27 de Jun. de 2013
I like this solution. Does anybody know how fliplr and wrev differ in this particular case? Is one more computationally expensive than the other?
Andrei Bobrov
Andrei Bobrov el 28 de Jun. de 2013
wrev(vect) -> vect(end:-1:1)
please try:
>> open wrev

Iniciar sesión para comentar.

Más respuestas (5)

Royi Avital
Royi Avital el 13 de Jun. de 2011

6 votos

This might work as well (For 1D Vectors):
vReversed = v(end:-1:1);
Good luck!

3 comentarios

Shweta Kanitkar
Shweta Kanitkar el 29 de Mayo de 2013
v(end:-1:1) subtracts each element from v(end) by 1.
Walter Roberson
Walter Roberson el 28 de Jun. de 2013
Matt Eicholtz points out that Shweta's comment is incorrect; no subtraction is done, only indexing.
Cyrus David Pastelero
Cyrus David Pastelero el 8 de Jul. de 2020
This is what I am looking for. Thank you.

Iniciar sesión para comentar.

Walter Roberson
Walter Roberson el 13 de Jun. de 2011

2 votos

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.
Varshitha Gouri
Varshitha Gouri el 7 de Jul. de 2026 a las 3:41
v = [1 2 3 4 5];
reversed = flip(v);
disp(reversed);
5 4 3 2 1
DEVARAKONDA STEPHEN
DEVARAKONDA STEPHEN el 28 de Jul. de 2026 a las 9:45
v = [10, 20, 30, 40, 50];
n = length(v);
for i = 1:n
rev(i) = v(n - i + 1);
end
disp('Reversed vector:');
Reversed vector:
disp(rev);
50 40 30 20 10

2 comentarios

Stephen23
Stephen23 el 28 de Jul. de 2026 a las 10:24
Doing this in a loop is very inefficient: avoid this approach!
Steven Lord
Steven Lord el 28 de Jul. de 2026 a las 14:10
It's also incorrect in some cases, since rev was not preallocated.
v = (1:5).'
v = 5×1
1 2 3 4 5
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
n = length(v);
for i = 1:n
rev(i) = v(n - i + 1);
end
rev
rev = 1×5
5 4 3 2 1
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
whos v rev
Name Size Bytes Class Attributes rev 1x5 40 double v 5x1 40 double
In this case rev is the wrong size/shape! Compare with one of the recommended approach:
flippedV = flip(v)
flippedV = 5×1
5 4 3 2 1
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
whos flippedV v
Name Size Bytes Class Attributes flippedV 5x1 40 double v 5x1 40 double
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)
flippedV = 1×0 empty double row vector
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
Unrecognized function or variable 'rev'.

Iniciar sesión para comentar.

Categorías

Preguntada:

el 13 de Jun. de 2011

Comentada:

el 28 de Jul. de 2026 a las 14:10

Community Treasure Hunt

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

Start Hunting!

Translated by