📄 环矩阵生成的c语言代码.txt
字号:
环矩阵生成的C语言代码[原创]
我们可以把卷积运算写作矩阵相乘的形式,此时卷积和矩阵为“环矩阵”,如下面的形式:
0 9 8 7 6 5 4 3 2 1
1 0 9 8 7 6 5 4 3 2
2 1 0 9 8 7 6 5 4 3
3 2 1 0 9 8 7 6 5 4
4 3 2 1 0 9 8 7 6 5
5 4 3 2 1 0 9 8 7 6
6 5 4 3 2 1 0 9 8 7
7 6 5 4 3 2 1 0 9 8
8 7 6 5 4 3 2 1 0 9
9 8 7 6 5 4 3 2 1 0
我写了3个生成这样一个矩阵的代码,前两个是根据循环移位生成的,是通用的,第三个是根据上面矩阵的规律生成的,不具有代表性,但我个人认为代码中循环变量的控制仍有一点小技巧,提供了一种思路:
#define N 10
#i nclude <conio.h>
void create(int array[N][N])
{
int i,j;
for(i=0;i<N;i++)
array[i][0]=i;
for(j=1;j<N;j++)
for(i=0;i<N;i++)
{
int t=(i-1+N)%N;
array[i][j]=array[t][j-1];
}
}
void crea(int array[N][N])
{
int i,j;
array[0][0]=0;
for(j=1;j<N;j++)
array[0][j]=N-j;
for(i=1;i<N;i++)
for(j=0;j<N;j++)
{
int t=(j-1+N)%N;
array[i][j]=array[i-1][t];
}
}
void cre(int array[N][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<i;j++)
{
array[i][j]=array[i-1][j]+1;
array[j][i]=N-array[i][j];
}
array[i][j]=0;
}
}
void output(int array[N][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",array[i][j]);
printf("\n\n");
}
}
void main()
{
int core[N][N],core1[N][N],core2[N][N];
clrscr();
create(core);
output(core);
printf("\n\n");
crea(core1);
output(core1);
printf("\n\n");
cre(core2);
output(core2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -