MATRICES with customized sum for rows and columns

2 Ansichten (letzte 30 Tage)
MSH
MSH am 7 Mai 2015
Kommentiert: Stephen23 am 21 Mai 2015
I want to create 4 matrices (6x10) with sums of rows and columns as following; in a single program/code.
mat1: sum_row1=sum_row2=......=sum_row6=r(say) sum_col1=sum_col2=......=sum_col6=c(say)&&&&&&& r=c
mat2: sum_row1=sum_row2=......=sum_row sum_col1≠sum_col2≠......≠sum_col6
mat3: sum_row1≠sum_row2≠......≠sum_row6 sum_col1=sum_col2=......=sum_col6
mat4: sum_row1≠sum_row2≠......≠sum_row6 sum_col1≠sum_col2≠......≠sum_col6
Kindly suggest some logic/program
Thanks

Akzeptierte Antwort

Michael Haderlein
Michael Haderlein am 7 Mai 2015
Bearbeitet: Michael Haderlein am 7 Mai 2015
To get mat1, you can use the magic function:
>> mat1=magic(4)
mat1 =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> sum(mat1,1)
ans =
34 34 34 34
>> sum(mat1,2)
ans =
34
34
34
34
mat2, mat3 and mat4 are easy, for instance use randoms and normalize the columns/rows:
>> matrand=rand(4);
>> mat2=bsxfun(@rdivide,matrand,sum(matrand));
>> sum(mat2)
ans =
1 1 1 1
>> mat3=bsxfun(@rdivide,matrand,sum(matrand,2));
>> sum(mat3,2)
ans =
1.0000
1.0000
1.0000
1.0000
mat4=matrand;
  3 Kommentare
Michael Haderlein
Michael Haderlein am 7 Mai 2015
Bearbeitet: Michael Haderlein am 7 Mai 2015
Oh, sorry, I didn't read that you need 6x10 matrices. However I'm confident that in this case mat1 only exists if all the sums are zero. If this is fine with you, create the matrix with
>> matrand=randi(100,5,9);
>> mat1=[matrand -sum(matrand,2);-sum(matrand,1) sum(matrand(:))];
>> sum(mat1,1)
ans =
0 0 0 0 0 0 0 0 0 0
>> sum(mat1,2)
ans =
0
0
0
0
0
0
MSH
MSH am 21 Mai 2015
THANKS

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by