matlab中判断一个矩阵中每一行中各列元素是否相等,返回每行中各列元素相等时的行号,并保存为一个列向量

2024-11-02 18:24:30
推荐回答(3个)
回答(1):

用一个程序实现n*n魔方矩阵中,每一行、每一列、每一对角线上的元素之和相等。

矩阵规律:

本程序只适合基数,解释如下:
N 为奇数时,此题中N设为5
(1) 将1放在第一行中间一列;   
(2) 从2开始直到n×n止各数依次按下列规则存放:   
按 45°方向行走,如向右上   
每一个数存放的行比前一个数的行数减1,列数加1   
(3) 如果行列范围超出矩阵范围,则回绕。   
例如1在第1行,则2应放在最下一行,列数同样加1;   
(4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。

[cpp] view plain copy

  • #include  

  • int main()  

  • {  

  • int a[100][100],x;/*初始化*/  

  • int i,j,m,n,temp;  

  • printf("输出魔方矩阵n=");  

  • scanf("%d",&x);  

  • while(x)  

  • {  

  • if(!(x%2))  

  • {  

  • printf("你输入了偶数,很遗憾本程序将退出");  

  • return 0;  

  • }  

  • else  

  • {  

  • for(i=0;i

  • for(j=0;j

  • a[i][j]=0;  

  • i=0;  

  • j=x/2;  

  • a[i][j]=1;  

  • for(temp=2;temp<=x*x;temp++)  

  • {  

  • m=i;  

  • n=j;  

  • i--;  

  • j++;  

  • if(i<0)  

  • i=x-1;  

  • if(j>=x)  

  • j=0;  

  • if(a[i][j]!=0)  

  • {  

  • i=m+1;  

  • j=n;  

  • }  

  • a[i][j]=temp;  

  • }  

  • }  

  • for(i=0;i

  • {  

  • for(j=0;j

  • printf("%4d",a[i][j]);  

  • printf("\n");  

  • }  

  • printf("输出魔方矩阵n=");  

  • scanf("%d",&x);  

  • }  

  • return 0;  

  • }  

回答(2):

比如说这个矩阵是A
num = find(mean(A,2)==A(:,1))

回答(3):

这个可以