-
简单的matlab实例——不规则矩阵反对角线相加处理
2020-08-05 11:34:10处理的目的如下图,总结成一句话就是对一个非方阵的不规则矩阵进行反对角线相加的处理,从而得到一个一维数组的数据。联想到matlab可以直接导入excel得到矩阵的优势,我决定用matlab来解决这个问题(当然python之类...问题描述
昨晚被我姐安排了一个小活,她需要对实验数据进行处理,但是苦于没有相关技能,就向我们求助了。处理的目的如下图,总结成一句话就是对一个非方阵的不规则矩阵进行反对角线相加的处理,从而得到一个一维数组的数据。联想到matlab可以直接导入excel得到矩阵的优势,我决定用matlab来解决这个问题(当然python之类的或许会有更简单的办法)
解决方案
话不多说,先上代码
// An highlighted block %修改i_max和j_max,分别为矩阵的行列数 i_max=24; j_max=28; i=1; j=1; m=2; k=1; X=i_max+j_max; a=zeros(X-1,1); while m<=X for i=1:1:m j=m-i; if i<=i_max && j<=j_max && j~=0 a(k)=a(k)+C(i,j); else end end m=m+1; k=k+1; i=1; end
这个问题解决思路很简单,将excel表格导入工作区后,即可以得到一个矩阵C,接下来的问题就是找出每个斜对角线的元素将他们相加即可。
在这里我的解决方案如下:
可以看出每条反对角线元素的行列标号和是相同的,且依次递增,再对标号进行判定,去掉不在矩阵中的数值,将这些值相加存入数组中就完成了。 -
从右上角到左下角沿反对角线打印方阵中的元素
2016-08-08 17:47:49从右上角到左下角沿反对角线打印方阵中的元素问题描述:从右上角到左下角沿反对角线打印方阵中的元素。假设矩阵为:
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16
输出:4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13,
分析:这个没有什么算法问题,就是纯粹的代码技巧问题,通过画图可以找出规律,只要确定每条反对角线的两端的坐标,就可以打印出对角线上的元素。因此可以将其分成两部分打印,定义两个变量row和column来保存矩阵的行数和列数,定义两个变量x和y来作为临时坐标变量。可确定出两部分的范围为打印(0,x)-(y,column-1)对角线上的元素,打印(x,0)-(row-1,y)对角线上的元素,具体代码如下:
import java.util.*; public class Main1 { public static void orderprint(int a[][]){ if(a==null){ System.out.println("数组不存在"); return ; } int row=a.length,column=a[0].length; if(row==0 || column==0){ System.out.println("数组为空数组"); return ; } int y=0,x=column-1; while(x>=0 && y<=row-1){ //打印(0,x)-(y,column-1)对角线上的元素 for(int j=x,i=0;j<=column-1 && i<=y;i++,j++) System.out.print(a[i][j]+","); x--;y++; } x=1;y=column-2; while(y>=0 && x<=row-1){ //打印(x,0)-(row-1,y)对角线上的元素 for(int i=x,j=0;i<=row-1 && j<=y;i++,j++) System.out.print(a[i][j]+","); x++;y--; } } public static void main(String[] args) { // TODO 自动生成的方法存根 int a[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; orderprint(a); } }
样例输出结果为:4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13, -
C基础习题:将N x N矩阵主对角线元素中的值与反对角线对应位置上元素中的值进行交换
2019-11-28 20:31:03将N x N矩阵主对角线元素中的值与反对角线对应位置上元素中的值进行交换要求如下C源码如下思路说明 要求如下 将两个数组主对角线与反对角线上的元素交换,如下所示。 // 1 2 3 4 --> 4 3 2 1 // 4 5 6 7 --&...要求如下
将两个数组主对角线与反对角线上的元素交换,如下所示。
// 1 2 3 4 --> 4 3 2 1
// 4 5 6 7 --> 4 6 5 7
// 7 8 9 1 --> 7 9 8 1
// 1 2 3 4 --> 4 2 3 1最近巩固一下基础,帮一些刚入门的小白解答问题,嗯…我也只是一只菜鸟哈,大神勿怪。
上传一下,以供查询、学习 、共享。C源码如下
#include <stdio.h> #define N 4 int _tmain(int argc, _TCHAR* argv[]) { int i, j; int t[N][N] = {21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}; printf("\nThe original array: \n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", t[i][j]); } printf("\n"); } printf("\nThe array after exchange: \n"); int Temp1 = 0; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if(i == j) { Temp1 = t[i][j]; t[i][j] = t[i][N-i-1]; t[i][N-i-1] = Temp1; continue; } } } for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", t[i][j]); } printf("\n"); } printf("\n"); return 0; }
思路说明
时间不多,长话短说。
因为数组给定了(也可从输入获取),主要是处理主对角线和反对角线上元素坐标索引的问题,可以发现主对角线上的元素坐标,以4X4为例:[0][0]、[1][1] 、[2][2] 、[3][3];而反对角线上的元素坐标索引分别为:
[0][3] 、[1][2] 、[2][1] 、[3][0]。
在内层循环中,当i == j时,则说明是主对角线上的元素,此时需要与该行反对角线上的元素进行交换,可以发现该元素的坐标索引为[i][N-i-1],则交换两者即可,欧啦。 -
python 数组按反对角线顺序输出
2018-12-14 15:59:54仔细观察不难发现遍历的时候越界一般会返回第一行或者最后一列之后再按反对角线遍历 那么我可以建立2个数组,一个只放原数组第一行和最后一列的元素,第二个数组放原数组剩下的元素 比如题目描述 A=[1,2,3,4,8,12...题目简述:
假如有一个3行4列的数字
1,2,3,4
5,6,7,8
9,10,11,12
要按1,2,5,3,6,9,4,7,10,8,11,12的顺序输出输入样例样例:
2
4
1,2,3,4,5,6,7,8
输出样例:
1 2 5 3 6 4 7 8思路:
一开始我想到是弄成2维数组,m,n记录遍历位置,越界后返回合法位置继续遍历,后来我想到了一种巧妙思路
仔细观察不难发现遍历的时候越界一般会返回第一行或者最后一列之后再按反对角线遍历
那么我可以建立2个数组,一个只放原数组第一行和最后一列的元素,第二个数组放原数组剩下的元素
比如题目描述
A=[1,2,3,4,8,12]
B=[5,6,7,9,10,11]
遍历A中的元素,当A中元素+(5-2)在B中存在就输出for i in A: print(i, end=' ') while B.count(i + T) != 0: print(i + T, end='') i += T
源代码:
class ArrayItem(): def Method(self): A = [] B = [] m = input('row:') n = input('col:') m = int(m) n = int(n) a = [] a.extend(input("Please input a array ,item split with ',': ").split(',')) b = [] for i in a: b.append(int(i)) if len(b)!=m*n: print('Error!!!') else: for i in range(0, n): A.append(b[i]) k = b[n - 1] + n while b.count(k) != 0: A.append(k) k += n for i in b: if A.count(i) == 0: B.append(i) T = b[n] - b[1] for i in A: print(i, end=' ') while B.count(i + T) != 0: print(i + T, end='') i += T def main(): array=ArrayItem() array.Method() if __name__ == '__main__': main()
效果图:
后记:
任何题目要多想想办法,解法不是唯一的,简洁是永恒的追求。 -
使用numpy包生成反对角线上全为1的矩阵
2020-12-31 04:45:38前几天突然有了一个想法,就是numpy包中有很多函数可以用来生成对角矩阵,然而有没有办法能够生成反对角矩阵呢?虽然我们知道生成反对角矩阵在数学上是没有意义的,例如:反对角全为1的矩阵实际上只与主对角线上全为... -
【面试题】将矩阵反对角线输出
2018-08-24 20:12:31矩阵: [[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15]]; 输出:5 4 10 3 9 15 2 8 14 1 7 13 6 12 11 1.先打印对角线右上角,包括对角线 2.再打印对角线左下角。 public class PrintMatrix { ... ... -
正反对角线java表示_连接4对角线Win Check
2021-03-17 16:31:25假设我们有grid = [%w| . . . . . . |,%w| . . . w w . |,%w| . . . w b . |,%w| b . w . b . |,%w| w w . w b b |,%w| b w b b w b |]#=&... [[".", ".", ".", ".", ".", "."],# [".", ".", ".", "w", "w", "."],# ... -
语言中对角线和反对角线_转置卷积/反卷积
2020-12-28 16:55:21转置卷积一.卷积与转置卷积卷积(convolution):卷积核为 3x3;no padding , strides=1"转置卷积"(the transpose of conv) 可以理解为upsample conv.卷积核为:3x3; no padding , strides=1那看下strides=2的时候。... -
求一个4*4整数二维数组反对角线之和
2020-04-03 14:43:00#include <stdio.h> void main() { int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int i; int s=0; for (i=0;i<=3;i++) s=s+a[i][3-i]; printf("%d",s); } -
语言中对角线和反对角线_油画中光影与构图的关系
2020-12-21 23:00:25因为有了光,才有了色彩,有了明暗,让物体有了质感,让世界万物变得丰富多彩。 光源的历史也是人类文明的历史。光在绘画中,不仅仅是照亮了物体,还负责传递物体的信息。物体的质感 色彩 空间 都必须通过光影来表现... -
语言中对角线和反对角线_超细粒度分析XLNet中神奇的Attention Mask
2021-01-06 08:59:19BERT后时代,XLNet 在20个任务上超越BERT,引起不小的关注。最重要的改进是 XLNet 实现了不在输入中加[Mask] 标志,同样可以利用上下文信息,解决了BERT预训练和微调不一致的问题。1、XLNet如何实现在不加 [Mask] ... -
oj-14-矩阵对角线和反对角线的和
2016-12-12 21:04:58#include #include int main() { int matrix[3][3],i,j,sum1,sum2; for(i=0;i;i++) { for(j=0;j;j++) { scanf("%d",&matrix[i][j]); } } sum1=matr -
语言中对角线和反对角线_竞赛中的几何问题:托勒密定律及应用
2021-01-11 06:14:52在平面几何学习中,除了一些常用的公理、定理外,对于准备数学竞赛的选手还需要掌握一些特殊的定理。其中托勒密定理就是在数学竞赛中经常会引用的一个著名定理。托勒密定理最早由古希腊数学家依巴谷(也称“喜帕恰斯... -
C语言 求n阶矩阵 主对角线之和 反对角线之和 主对角线之和和反对角之和的总和
2020-03-20 01:45:21printf("主对角线的和是:%d\n反对角线的和是:%d\n主对角线之和和反对角之和的总和是:%d\n",sum1,sum2,sum); return 0; } 在VS2019下,需将源文件的scanf改为scanf_s: #include int main() { int i, j, n, sum1 = ... -
二维数组 检查行 || 列 || 正对角线 || 反对角线
2019-12-20 08:45:27//检查反对角线 for ( i = 0 ; i < size ; i ++ ) { if ( board [ i ] [ size - i - 1 ] == 1 ) { num0fx ++ ; } else num0f0 ++ ; } if ( num0fx == size ) { result = 0 ; } else ... -
在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是...
2016-09-18 14:20:00//在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。 char [][]y=new char [10][10]; for(int i=0;i<10;i++) { ... -
语言中对角线和反对角线_第一百七十二夜:平行四边形对角线平方和
2021-01-13 05:57:20青山不移,流云来去,过往云烟,如如不动。不若埋首烟波,一飨浮生。人情事端,自是不适,何妨挂帆高咏,任由叶落纷纷。人生如此,浮生如斯。...除此之外,探索平行四边形是否为菱形亦是常见考法。... -
语言中对角线和反对角线_球场上学会对角线这一招,让你轻松摆脱被动局面
2020-12-26 11:33:17对角线是羽毛球场上最长的一条跑动线路,但凡是有点经验的球友都知道利用它充分地调动对手,赢球不费吹灰之力。可是理想和现实往往都有差距,你以为自己的对角线回球是这样的↓结果是这样的↓对角线这样的线路,运用... -
语言中对角线和反对角线_陈列师在视觉陈列中的“线性设计”,陈列培训分享...
2021-01-04 14:17:36斑马视觉分享-作为陈列师,我们离不开从基本的视觉陈列元素开启对于视觉陈列的理解,因此从本期开始,我们将为大家解析视觉元素在视觉陈列设计VMD中的存在!在几何学上,线--是一个看不见的实体,它是点在移动中... -
语言中对角线和反对角线_暖通空调系统中镀锌铁皮风管质量技术分享,陕暖协建议收藏...
2021-01-12 02:30:05规范中规定,低压系统风管10米接缝不大于2个漏光点且平均每100米接缝不大于16个漏光点为合格。通过检查大楼已施工完成的11-14层风管接缝,发现漏光点超标,存在100米接缝大于 16个漏光点。控制好接缝漏光点是保证... -
语言中对角线和反对角线_羽毛球单打常用六计策,让对手在相持中,逐渐步入自己设计的陷阱...
2021-01-02 11:07:58对于业余球友来说,单打更多地要求运动员具备强悍的身体能力,利用自己不知疲倦的跑动来寻找对手的破绽,可是如果单纯依靠自己跑不死的体能,真的是听起来都觉得累……对于单打的爱好者来说,除了充足的体能储备,更...