Effacer les filtres
Effacer les filtres

Code for 'Reverse a Vector'

30 vues (au cours des 30 derniers jours)
Capulus_love
Capulus_love le 13 Août 2020
Réponse apportée : Rajith le 17 Déc 2023
v = [1 2 3 4 5];
w = reversal(v)
%-----------------------------------------------------------
function w = reversal(v)
persistent z;
s = size(v);
e = s(2);
z(e) = v(1);
if s(2) == 1
return
end
v = v(2:end);
reversal(v);
w = z;
end
% The problem is that i can't pass the random vector.
% Error says Variable w must be of size [1 9]. It is currently of size [1 15].
% Check where the variable is assigned a value.
% Test failed using v = [ -75 -22 57 13 -34 2 -94 -49 -11]
% Why does it work like this?
  1 commentaire
Atif Penkar
Atif Penkar le 23 Août 2020
Did you solve this one? I am stuck on this too, if you could help me out would be great..

Connectez-vous pour commenter.

Réponses (6)

Md Jawarul Moresalein Ayon
Md Jawarul Moresalein Ayon le 28 Août 2020
I have done this one,you may check it ---
function w=reversal(v)
s=length(v);
if s==1
w=v;
else
w(1,1)=v(end);
v=v(1:end-1);
w=[w(1,1),reversal(v)];
end
  11 commentaires
Hemanth Kumar Reddy Boreddy
Hey Walter and Bruno, thanks for the help. I was almost there but confused in the end. Thanks again
Micheal Omojola
Micheal Omojola le 9 Nov 2020
Modifié(e) : Micheal Omojola le 9 Nov 2020
@Bruno Luong. I have edited Walter's code, and it takes care of empty input:
function y=reversal(v)
y=[];
if length(v)==1
y=v(1);
elseif length(v) > 1
k=v(1:ceil(length(v)/2));
b=v(ceil(length(v)/2)+1 :end);
y=[reversal(b) reversal(k)];
else
return
end
end

Connectez-vous pour commenter.


Serhii Tetora
Serhii Tetora le 13 Août 2020
I had no this error with
v = [ -75 -22 57 13 -34 2 -94 -49 -11]
You can also use
w = flip(v)
It is same..
  1 commentaire
Capulus_love
Capulus_love le 13 Août 2020
Modifié(e) : Capulus_love le 13 Août 2020
i have no error too... but the answer says there is a problem.
i know the function 'flip' , but it needs to use recursive function so i made it.

Connectez-vous pour commenter.


Mohamed Eid
Mohamed Eid le 10 Fév 2023
Modifié(e) : Mohamed Eid le 14 Fév 2023
This code solves the problem and passes all of test cases.
function v = reversal(v)
len = length(v);
if len > 1
len = fix(len/2);
left_be_right = reversal(v(1:len));
right_be_left = reversal(v(len + 1:end));
v = [right_be_left,left_be_right];
end
end

Walter Roberson
Walter Roberson le 13 Août 2020
That approach is wrong.
Reverse of A B is reverse of B, followed by reverse of A. When you let either A or B be a scalar then reverse of the scalar is the value itself. Therefore you can code each step with just a single recursive call and appending data.

xin yi leow
xin yi leow le 25 Jan 2021
function v=reversal(w)
if length(w)==1
v=w(1);
else
v=[reversal(w(2:end)) w(1)];
end
end
  1 commentaire
Rik
Rik le 25 Jan 2021
Your function will fail for empty inputs. The edit below fixed that and makes the function more compact.
function v=reversal(v)
if numel(v)>1
v=[reversal(v(2:end)) v(1)];
end
end

Connectez-vous pour commenter.


Rajith
Rajith le 17 Déc 2023
function v = reversal2(v)
if length(v) > 1
ii = round(length(v) / 2);
v = [reversal2(v(ii+1:end)) reversal2(v(1:ii))];
end
end

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by