本文主要是介绍关于规律性矩阵的生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用matlab进行矩阵的生成,其中涉及到了向量元素的寻址问题,使用向量的方法可以快速的进行赋值。
任务:
寻找规律后进行向量元素的赋值,这里使用循环来赋值。
m=5;
M=zeros(2*m-1,2*m-1);
for i = 1:mM(i,1:m-i)=i;M(i,m+1-i:m)=1:i;
end
M(1:m,m:2*m-1)=fliplr(M(1:m,1:m))
M(m:2*m-1,1:2*m-1)=flipud(M(1:m,1:2*m-1))
其中的fliplr和flipup分别是左右翻转和上下翻转的函数,可以快速的进行翻转操作。
生成结果:
后自己以c语言进行练习,相比于matlab,老夫的操作就繁琐一些,还需要进行更多的编成练习:
#include<stdio.h>
#define M 7
int main()
{int i, j, s, count, count2;int a[M][2 * M - 1];for (i = 0; i < M; i++){for (j = 0; j < M - 1 - i; j++){a[i][j] = i + 1;}count = 0;for (j = M - 1 - i; j < M; j++){s = 1;s = s + count;a[i][j] = s;count++;}count2 = 0;for (j = M; j < M + i; j++){a[i][j] = i - count2;count2++;}for (j = M + i; j < 2 * M - 1; j++){a[i][j] = i + 1;}}for (i = 0; i < M ; i++){for (j = 0; j < 2 * M - 1; j++){ printf("%2d", a[i][j]);}printf("\n");}for (i = M-2; i >= 0; i--){for (j = 0; j < 2 * M - 1; j++){printf("%2d", a[i][j]);}printf("\n");}return 0;
}
老夫愚笨,仍需练习。
这篇关于关于规律性矩阵的生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!