#include<stdioh>
int main()
{int i,j,t,n,a[20][20];
scanf("%d",&n);
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{a[i][j]=in+j+1;
printf("%3d",a[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<=n/2;i++)
for(j=i;j<n-i-1;j++)
{t=a[i][j];
a[i][j]=a[j][n-1-i];
a[j][n-1-i]=a[n-1-i][n-1-j];
a[n-1-i][n-1-j]=a[n-1-j][i];
a[n-1-j][i]=t;
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}
矩阵的 *** 作大概有这么几种吧:转置:y=x'
x=magic(3)
x =
8 1 6
3 5 7
4 9 2
>> y1=x'
y1 =
8 3 4
1 5 9
6 7 2
旋转90度,180度: y=rot90(x)
>>y2=rot90(x)
y2 =
6 7 2
1 5 9
8 3 4
y3=rot90(x,2)
y3 =
2 9 4
7 5 3
6 1 8
对称反折,重排等。
至于13096度的旋转,还真没注意过。如果是属于坐标轴变换的,还可以理解,如果只是单纯的矩阵元素 *** 作,恐怕不行。你到底要逆时针还是顺时针
顺时针的,转置一下,水平翻转一下就好了
逆时针的,转置一下,垂直翻转一下就好了
#include <stdioh>
#include <stdlibh>
#define N 4
void show(int a[N][N]) {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%3d", a[i][j]);
}
printf("\n");
}
printf("--\n");
}
int main()
{
int a[N][N];
int i, j, t = 1;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
a[i][j] = t++;
}
}
show(a);
for (i = 0; i < N; i++) {
for (j = 0; j < i; j++) {
t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
}
show(a);
/ 这是顺时针水平翻转的,注意不能与下面垂直翻转的同时运行,不然就水平翻一下,垂直又翻一下了
for (i = 0; i < N; i++) {
for (j = 0; j < N/2; j++) {
t = a[i][j];
a[i][j] = a[i][N-1-j];
a[i][N-1-j] = t;
}
}
show(a);/
for (i = 0; i < N; i++) {
for (j = 0; j < N/2; j++) {
t = a[j][i];
a[j][i] = a[N-1-j][i];
a[N-1-j][i] = t;
}
}
show(a);
return 0;
}spss因子分析时选择了正交或斜交旋转才会产生“旋转成分矩阵”。“成分矩阵”是主成分分析法得到的。
“旋转成分矩阵”是因子分析得到的,看每个变量在各个因子中系数的大小,表示变量在因子的载荷大小,一般大于05的就归于该因子当中。负数表示该因子中其他的方向是相反的。 扩展资料
旋转矩阵(英语:Rotation matrix)是在乘以一个向量的时候有改变向量的方向但不改变大小的效果并保持了手性的'矩阵。旋转矩阵不包括点反演,点反演可以改变手性,也就是把右手坐标系改变成左手坐标系或反之。所有旋转加上反演形成了正交矩阵的集合。旋转可分为主动旋转与被动旋转。主动旋转是指将向量逆时针围绕旋转轴所做出的旋转。被动旋转是对坐标轴本身进行的逆时针旋转,它相当于主动旋转的逆 *** 作。
旋转矩阵的原理在数学上涉及到的是一种组合设计:覆盖设计。而覆盖设计,填装设计,斯坦纳系,t-设计都是离散数学中的组合优化问题。它们解决的是如何组合集合中的元素以达到某种特定的要求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)