# rempet

4 views (last 30 days)
Niki on 7 Sep 2011
I have a matrix and a vector, I want to repmat them the same my mean is that if I change the first row of the matrix I want this also happen the same for the vector,
##### 2 CommentsShowHide 1 older comment
Niki on 7 Sep 2011
X=rand(4) and Y=rand(4,1)
for example
X=[ 0.1734 0.0605 0.6569 0.0155
0.3909 0.3993 0.6280 0.9841
0.8314 0.5269 0.2920 0.1672
0.8034 0.4168 0.4317 0.1062]
and
Y =
0.3724
0.1981
0.4897
0.3395
Then I want randomly change the X rows simultaneously with Y
for example next one X become
X=[ 0.3909 0.3993 0.6280 0.9841
0.8314 0.5269 0.2920 0.1672
0.8034 0.4168 0.4317 0.1062
0.1734 0.0605 0.6569 0.0155
]
(the first row went to the last row )
for Y also the same
Y=[0.1981
0.4897
0.3395
0.3724
]

Fangjun Jiang on 7 Sep 2011
X=rand(4)
Y=rand(4,1)
Index=[2 3 4 1];
X=X(Index,:)
Y=Y(Index,:)
Fangjun Jiang on 7 Sep 2011
You are welcome! BTW, Index=randperm(4);X=X(Index,:); works too!

Honglei Chen on 7 Sep 2011
An alternative approach is to use left-multiply to achieve row manipulation. In your case, if you want to move your first row to the last, the corresponding matrix is
T = [0 1 0 0;0 0 1 0;0 0 0 1;1 0 0 0]
Then you can do
X = T*X
Y = T*Y
As long as you can build T, then you can the manipulate them together.
HTH
Niki on 7 Sep 2011
Thanks Honglei

Walter Roberson on 7 Sep 2011
What you are asking to do is not possible with ordinary numeric datatypes.
You could create a new object-oriented data class that did the work for you.