关于matlab 魔方矩阵的

1、用前100个自然数创建一个10阶的魔方矩阵,求出每行、每列、所有对角线元素的和,再将矩阵中大于40,小于60的数用NaN代替。 跪求高人

第1个回答  2013-10-14
A = magic(10);

A(1,:)表示第一行,A(2,:)表示第二行,...,依次类推
A(:,1)表示第一列,A(:,2)表示第二列,...,依次类推

diag(A)表示主对角线的元素

diag(fliplr(A))表示副对角线的元素

sum函数用来求和,比如
sum(A(1,:)) 返回的就是矩阵第一行元素之和,依次类推

至于最后一问:
[rows,cols,vals] = find( 40<A & A<60 );
for i=1:length(rows)
A(rows(i),cols(i))=NaN;
end;追问

,我不是计算机专业的学生只是选修课要求做请您能不能直接把程序写给我呀,非常感谢啦

追答

A = magic(10);

%求所有行元素之和
SumH1 = sum(A(1,:)) ; %第一行
SumH2 = sum(A(2,:)) ;
SumH3 = sum(A(3,:)) ;
SumH4 = sum(A(4,:)) ;
SumH5 = sum(A(5,:)) ;
SumH6 = sum(A(6,:)) ;
SumH7 = sum(A(7,:)) ;
SumH8 = sum(A(8,:)) ;
SumH9 = sum(A(9,:)) ;
SumH10 = sum(A(10,:)) ; %第十行

%求所有列元素之和

SumL1 = sum(A(:,1)) ; %第一列
SumL2 = sum(A(:,2)) ;
SumL3 = sum(A(:,3)) ;
SumL4 = sum(A(:,4)) ;
SumL5 = sum(A(:,5)) ;
SumL6 = sum(A(:,6)) ;
SumL7 = sum(A(:,7)) ;
SumL8 = sum(A(:,8)) ;
SumL9 = sum(A(:,9)) ;
SumL10 = sum(A(:,10)) ; %第十列

%求主对角线元素之和

SumZ = sum(diag(A));

%求副对角线元素之和

SumZ = sum(diag(fliplr(A)));

%将矩阵中大于40,小于60的数用NaN代替

[rows,cols,vals] = find( 40<A & A<60 );
for i=1:length(rows)
A(rows(i),cols(i))=NaN;
end;

本回答被提问者采纳
相似回答