matlab中判断一个矩阵中每一行中各列元素是否相等,返回每行中各列元素相等时的行号,并保存为一个列向量
我这里截出的图是每行中的各列元素值都是相等的。但是整个矩阵其余各行中每列元素是有不相等的。还请各位朋友助我! 展开
用一个程序实现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<stdio.h>
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<x;i++)
for(j=0;j<x;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<x;i++)
{
for(j=0;j<x;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("输出魔方矩阵n=");
scanf("%d",&x);
}
return 0;
}
去你妈逼在我这提问里瞎鸡巴扯
num = find(mean(A,2)==A(:,1))
我是一行一行的比较该行各列元素是否相等,分别遍历每一行时(比如第一行时),这里该行(第一行)有5列元素全是0,则将该行的行号(此时为第一行)保存下来放入一个列向量中。
可以的,这样更加严谨,你也可以这样做
(sum(repmat(A(:,1),1,size(A,2))-A,2)==0)