Help with rowshift needed

2 views (last 30 days)
Tom
Tom on 13 Nov 2013
I have narrowed down the problem from my previous question.
I have a for loop
for ashift = 1:n
x = [x(:,1) - x(ashift,1) x(:,2) - x(ashift,2) ...
x(:,3) - x(ashift,3)]
end
which outputs four matrices (when n = 4) like so:
x =
0 0 0
-21.3131 8.6558 -2.5770
-21.3446 15.1527 -11.0297
-14.4331 16.9392 9.8923
x =
21.3131 -8.6558 2.5770
0 0 0
-0.0315 6.4970 -8.4527
6.8800 8.2834 12.4693
x =
21.3446 -15.1527 11.0297
0.0315 -6.4970 8.4527
0 0 0
6.9115 1.7865 20.9220
x =
14.4331 -16.9392 -9.8923
-6.8800 -8.2834 -12.4693
-6.9115 -1.7865 -20.9220
0 0 0
But I need the rows with zeros in to be at the top of the matrix to simplify subsequent calculations, so I am implementing:
rowshift = 0;
for ashift = 1:n
x = [x(:,1) - x(ashift,1) x(:,2) - x(ashift,2) ...
x(:,3) - x(ashift,3)];
x = circshift(x,rowshift)
rowshift = rowshift - 1;
end
However for some reason this changes the order of the output, i.e:
x =
0 0 0
-21.3131 8.6558 -2.5770
-21.3446 15.1527 -11.0297
-14.4331 16.9392 9.8923
x =
0 0 0
-0.0315 6.4970 -8.4527
6.8800 8.2834 12.4693
21.3131 -8.6558 2.5770
x =
0 0 0
14.4331 -16.9392 -9.8923
-6.8800 -8.2834 -12.4693
-6.9115 -1.7865 -20.9220
x =
0 0 0
6.9115 1.7865 20.9220
21.3446 -15.1527 11.0297
0.0315 -6.4970 8.4527
You see the 3rd and 4th matrices are changing order. Can anyone explain why this is happening, and how to stop it from happening?
Kind regards,
Tom

Answers (0)

Categories

Find more on Resizing and Reshaping Matrices 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!