How do I reverse the order of a vector?

Generate a 4x4 matrix P, whose first column is an array of 0, 2, 4 and 6; second column is an array of 1, 3, 5, and 7; third is the second column in reverse order and fourth column is the first column in reverse order. I want to use Reverse function or something like that..

Answers (9)

It would be an inefficient idea to use a function to create a 4x4 matrix with fixed values!
P = [0, 1, 7, 6; ...
2, 3, 5, 4; ...
4, 5, 3, 2; ...
6, 7, 1, 0];
Now this homework is solved. Kind regards to your teacher.

4 Comments

That can be expressed more simply:
P = [0 1 7 6
2 3 5 4
4 5 3 2
6 7 1 0];
I think this is more prone to errors and confuses beginners.
I think of it as a way of differentiating between those who learn and those who copy without understanding.
Funny stuff Jan Simon!

Sign in to comment.

Walter, I am shocked that you didn't include the obvious nested FOR loop.
cnt = 0;
for ii = 1:2,
for jj = 1:4
A(4-jj+1,4-ii+1) = cnt;
A(jj,ii) = cnt;
cnt = cnt + 2;
end
cnt = 1;
end

1 Comment

I was working on fitting it to a 100'th order polynomial, but discovered that any order beyond 23 gives absolutely completely wrong answers!

Sign in to comment.

t = (0:2:6).'; P = [t, t+1, 7-t, 6-t];
Or, a one liner:
reshape(permute(reshape([0:7 7:-1:0],2,4,2),[2,1,3]),4,4)
t = (0:2:6).';
trev = t(length(t):-1:1);
P = [t, t+1, trev+1, trev];
t = (0:2:6).'
trev = zeros(size(t));
trev(end:-1:1) = t;
P = [t, t+1, trev+1, trev];
for K = 1 : 4
t(K) = 2*(K - 1);
end
for K = 1:length(t)
trev(K) = t(end+1-K);
end
etc.
clc;
clear all;
close all;
x=zeros(4,4);
x(:,1)=[1 2 -1 -2];
l=length(x);
x(:,2)=[1 3 -1 -3];
k=1;
for i=3:4
for j=1:4
x(j,i)=x(l+1-j,k);
end
k=k+1;
end

Products

Asked:

on 9 Feb 2011

Community Treasure Hunt

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

Start Hunting!