How to mix integers and chars in matrix?

조회 수: 3 (최근 30일)
zakri
zakri 2011년 1월 27일
1. I want to create the following matrix:
A=[1 2 3 A B C]
2. After that, based on the matrix A, I want to generate random matrix of this following matrix:
A1=[1 3 2 A C B]
A2=[2 1 3 B A C]
A2=[2 3 1 B C A]
Does any body can help me?
  댓글 수: 1
Paulo Silva
Paulo Silva 2011년 1월 27일
Not possible inside matrix, you must use cells

댓글을 달려면 로그인하십시오.

채택된 답변

Sebastian
Sebastian 2011년 1월 27일
As Paulo pointed out, this most likely requires usage of cells, e.g.:
>> A = {1 2 3 'A' 'B' 'C'};
>> A1 = A(randperm(6))
A1 =
[3] 'A' [1] 'C' [2] 'B'
>> A2 = A(randperm(6))
A2 =
[3] [2] 'C' 'A' 'B' [1]
However, if the integers and chars are always 1 digit/characte, then you can maybe also use the following approach:
>> a = '123ABC';
>> a1 = a(randperm(6))
a1 =
13A2CB
>> a2 = a(randperm(6))
a2 =
31BAC2

추가 답변 (3개)

zakri
zakri 2011년 1월 27일
Thank you very much. I really appreciate it. However, how do we want to make the alphabet change according to the integer? for instance:
Matrix A is :
A=[1 2 3 A B C]
where
A (column 3) is dependant to 1 (column 0)
B(column 4) is dependant to 2 (column1)
C(column 5) is dependant to 3 (column 2)
if the integer 1, 2 and 3 is randomly permute within the columns
0 to 2, the alphabets of A,B and C are also randomly permute within columns 3 to 5.

Sebastian
Sebastian 2011년 1월 27일
Well, you could do something like
>> a = '123ABC';
>> l = size(a,2);
>> rp = randperm(l/2);
>> a1 = a([rp rp+l/2])
a1 =
321CBA
  댓글 수: 1
zakri
zakri 2011년 1월 28일
thank you. It helps me a lot.

댓글을 달려면 로그인하십시오.


zakri
zakri 2011년 1월 28일
hi again... How to repeatedly do random such: 321CBA 312CAB 213BAC
I type a code as the following:
A='123ABC'
AA=[];
randormsort=[];
l=size(a,2);
rp=randperm(l/2);
for i=1:3
AA(i,:)=A([rp rp+l/2]);
end
randomsort=[AA];
however the result appear as follows:
AA =
49 51 50 65 67 66
49 51 50 65 67 66
49 51 50 65 67 66
the result that i am expected should be something like this:
3 2 1 C B A
2 1 3 B A C
2 3 1 B C A
  댓글 수: 9
Paulo Silva
Paulo Silva 2011년 1월 31일
already did lol
c'mon you just need to put the randperm inside the loop, so easy :)
zakri
zakri 2011년 1월 31일
It works!!thank you.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by