def rot(a):
n = len(a)
if n <= 1:
return a
for i in range(n // 2):
for j in range(i, n - i - 1):
tmp = a[i][j]
a[i][j] = a[n - 1 - j][i]
a[n - 1 - j][i] = a[n - 1 - i][n - 1 - j]
a[n - 1 - i][n - 1 - j] = a[j][n - 1 - i]
a[j][n - 1 - i] = tmp
# 测试通过
for m in range(8):
print("-"*10 + "--" + "-"*10)
print("-"*10 + str(m) + "-"*10)
print("-"*10 + "--" + "-"*10)
if not m:
a = []
else:
a = [[i + j for j in range(m)] for i in range(1, m ** 2 + 1, m)]
for i in range(len(a)):
print(a[i])
print("-" * 20)
rot(a)
for i in range(len(a)):
print(a[i])
相关推荐
欧拉角,轴角,四元数与旋转矩阵详解
入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。目录一、欧拉角1、静态定义2、欧拉角的表示 3、欧拉角表示的优缺点 4、欧拉角的万向节死锁(静态不存在万向锁的问题)二、四元数1、提出意义和定义 (含轴角)2、四元数的相关计算法则3、四元数的极形式4、四元数的使用举例5、四元数的优缺点三、四元数和欧拉角间的相互转化1、四元数转为欧拉角2、欧拉角转为四元数四、旋转矩阵对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。来一个经典的示例
旋转矩阵
一、旋转矩阵的公式 1,绕X轴旋转 2,绕Z轴旋转 3,绕Y轴旋转 4,绕任意轴A旋转 其中 c = cosθ, s = sinθ. 二、旋转矩阵的性质 1,旋转矩阵是可逆的 2,旋转变换是刚性变换,也就是说旋转变换只改变物体的位置,不改变物体的形状和尺寸。 3,旋转矩阵是正交矩阵,也就是旋转矩阵的逆等于其转置,用符号表示为 invert(R) = trans
看opengl写代码(3) 实现矩阵的旋转
参考 opengl编程指南 P17 直接上代码: // doubleBuffer.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include static GLint spin = 0; void init(){ glClearColor(0.0,0.0,0.0,0.0); glShadeModel(GL_FLAT);//
旋转矩阵的几种描述方式
关于旋转矩阵 在坐标系的变换中,主要分为旋转变换和平移变换。对于旋转变换来说,常常通过一个3×3的正交矩阵来描述坐标系的一个旋转过程,也可以用于描述一个空间物体的姿态。 1.旋转矩阵 旋转矩阵一般可以通过以下几种方式获得。 1.1.根据定义 已知存在两个坐标系{A}和{B},如何得到相对于{A}的{B}的姿态,即旋转矩阵BAR^A_BRBAR呢? 假设用XB^\hat{X_B}XB^、YB^\hat{Y_B}YB^和ZB^\hat{Z_B}ZB^来表示坐标系{B}主轴方向的单位矢量。当用坐标系
三维旋转矩阵_三维旋转:欧拉角、四元数、旋转矩阵、轴角之间的转换
0 引言来鹅厂实习了一段时间,因为没有什么特别紧急的需求(hahahahaha),所以主要花在了学习和捣鼓一些小工具上。有一个小需求是要实现鼠标拖动球体的转动,然后发现我不再能只用欧拉角来糊弄过去了。然后又发现,网上大部分资料的采用的欧拉角顺规都是xyz,然后我基于D3D11的辣鸡框架用了zxy,公式不太能直接套用,于是摸了两三天鱼,整理了一下几种三维旋转表示(欧拉角,四元数,旋转矩阵,...
旋转矩阵、轴角 的小角度近似
旋转矩阵在小角度时与轴角的关系
旋转变换(一)旋转矩阵
1. 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移、旋转、缩放、剪切这几种。本文以及接下来的几篇文章重点介绍一下关于旋转的变换,包括二维旋转变换、三维旋转变换以及它的一些表达方式(旋转矩阵、四元数、欧拉角等)。 2. 绕原点二维旋转 首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单
矢量旋转矩阵
一般情况下,我们遇到的旋转矩阵都是 anti-clockwise rotation matrix,即逆时针旋转矩阵。那么有些小伙伴们可能就会问了,顺时针旋转矩阵的形式应该是什么样子呢?很简单,只需要把参数。
【矩阵】如何构建旋转矩阵
以上介绍了两种方法构建在a,b所在的平面旋转任意角度的矩阵,希望对大家有所帮助。
华为星闪SLE实战:手把手教你用HarmonyOS开发智能家居控制应用(附完整代码)
本文详细介绍了如何利用华为星闪SLE技术,结合HarmonyOS开发智能家居控制应用。通过对比传统无线技术,阐述了星闪SLE在低时延、高可靠性和高并发方面的优势,并提供了从环境搭建、设备发现、连接管理到核心控制代码的完整实战教程,帮助开发者快速上手这一无线短距通信技术。
【腹腔镜数据集】Cholec80+CholecSeg8k2020+Endoscapes2024
计算机辅助手术的发展旨在提高手术的正确性和安全性。然而,研究人员和工程师却面临着开发和训练更好算法所需的注释数据有限的问题。因此,同步定位与建图(SLAM)等基础算法的发展受到限制。基于Cholec80数据集,从Cholec80中的17个视频片段中提取了8,080个腹腔镜胆囊切除术图像帧,对图像进行注释并向公众发布。该数据集名为 CholecSeg8K。这些图像中的每一个都以十三个类别的像素级注释,这些类别通常在腹腔镜胆囊切除术中发现。
三维坐标系旋转——旋转矩阵到旋转角之间的换算
相关文章: matlab相机标定获取内参 旋转矩阵到旋转角之间的换算 solvepnp 单目三维位姿估计--------利用二维码求解相机世界坐标 solvepnp 单目三维位姿估计--------理论 在做单目三维位姿估计(即估计目标物相对相机的姿态或相机相对目标物的姿态)时会用到solvepnp函数, 函数原型为: cv2.solvePnP(objectPoints, i...
如何下载era5数据?(两种方式)
供水利大数据云计算课程同学参考使用#
四元数与旋转矩阵
01 什么是四元数 四元数——基本概念 https://zhuanlan.zhihu.com/p/27471300 四元数——旋转 https://zhuanlan.zhihu.com/p/27541307 02 四元数与旋转矩阵 这里主要参考的是 右手系转左手系、旋转矩阵转四元数、四元数的两种表达(Hamilton/JPL)(这篇文章很棒,需要认真看哦~) 网上关于四元数有左手右手两种表达方式,有些地方标明了是在什么坐标系下的公式,而大多数地方是没有的。 所以如果“四元数转旋转矩阵”和“旋转矩阵转四元
6G网络的关键技术、应用前景与挑战并存的科技征途
移动通信技术正以前所未有的速度迭代更新,而6G技术的研发进程渐渐成为了当前科技领域的热点。全球各国已纷纷将目光投向了充满想象的6G时代。本文将探讨全球6G技术研发的最新进展,以及6G技术的核心创新与潜在应用。
TP-LINK电信定制摄像头刷机教程:解锁官方功能与固件升级
固件是嵌入式设备的操作系统,控制着硬件的基础功能。其工作原理是通过更新或替换存储在设备非易失性存储器中的程序代码,从而改变设备的行为和功能。这项技术的核心价值在于赋予用户对设备的完全控制权,能够解除厂商或运营商的软件限制,实现功能自定义、性能优化和安全更新。在智能家居、网络设备和物联网领域,固件升级与刷机是常见的工程实践,用于修复漏洞、增加新特性或适配不同平台。本文聚焦于利用TFTP恢复模式这一通用网络设备维护机制,针对TP-LINK电信定制版摄像头,提供一套完整的刷机方案,将设备刷入官方通用版固件,以解除
Unity中Shader旋转矩阵(二维旋转矩阵)
在Shader中,我们经常对顶点进行旋转变换。我们在这篇文章中了解一下旋转使用的旋转矩阵。
电子技术——共栅和共源共栅放大器的高频响应
我们在之前学过无论是是CS放大器还是CE放大器,都可以看做是一个带通(IC低通)滤波器。在高频处的响应收到输入电容 $C_{in}$ 的限制(主要是米勒效应)。因此,若想扩大放大器的带宽,我们必须减小米勒效应,一种方案就是共栅放大器。
旋转成分矩阵结果分析_SPSS分析最常用的因子分析步骤来啦~
因子分析是指研究从变量群中提取共性因子的统计技术。最早由英国心理学家C.E.斯皮尔曼提出。他发现学生的各科成绩之间存在着一定的相关性,一科成绩好的学生,往往其他各科成绩也比较好,从而推想是否存在某些潜在的共性因子,或称某些一般智力条件影响着学生的学习成绩。因子分析可在许多变量中找出隐藏的具有代表性的因子。将相同本质的变量归入一个因子,可减少变量的数目,还可检验变量间关系的假设。基本步骤:...
PPT制作能力在职场中真的重要吗?一定要美术功底才能学好PPT吗?
我推出PPT技能培训专栏啦!好的PPT可以让你事半功倍、2023拥有PPT能力还可以让你具备一门极有价值的斜杠能力。更多内容请进:梦幻训练营专栏。专栏内会用本人积累的近10年的PPT学习方法论在短时间内教会你如何制作出精美绝伦的PPT,每篇教程后还会免费赠送一些小福利,不可多得。
保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子
笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。
证明旋转矩阵为正交矩阵以及证明旋转矩阵的特征根只能为正负一
本人初学增强现实课程,其中涉及到了矩阵变换的知识点。书中使用三维正交矩阵表示物体的旋转,不过没有给出相关的证明。本人查阅了相关资料,整理了一下各家思路,照着自己的理解写了一下旋转矩阵为正交矩阵的证明以及相关性质的证明。如有错误,欢迎交流指正~ 另外,本文是以一种零基础小白的角度来写,对一些内容会进行非常详细的解释,对一些大佬来说可能会有些冗余,在此先提前告知~
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
Matlab矩阵旋转45度
1.函数曲线 x=linspace(-2,2); y=x.^2; A=[cosd(-45) -sind(-45);sind(-45) cosd(-45)]*[x;y]; figure; plot(x,y,'r',A(1,:),A(2,:)); axis equal; legend('原图像','顺时针旋转45°后的图像') 2.图像旋转~=矩阵旋转 mat = [1 2 3;4 5 ...
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
【机器视觉】旋转矩阵,坐标系变换
分享一下我搓机器人过程中遇到的问题在机器视觉中,常需要将物体的坐标从一个坐标系变换到另一个坐标系。旋转矩阵可以精确描述物体在三维空间中的旋转关系,常配合平移矢量一起完成刚体变换。相关算法放在文末,博主不是计算机专业,代码基本都是根据数学公式写出来的,没有优化~
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
matlab因子载荷矩阵正交旋转,因素分析中的矩阵旋转
因素分析中的矩阵旋转因素分析法因素分析是一种统计技术,目的是从众多的可观测的“变量”中,概括和推论少数“因素”。用最少数的“因素”来概括和解释最大量的观测事实。揭示事物之间的最本质联系。因素分析法的步骤KMO和Bartlett球形检验因素分析前,首先进行KMO检验和Bartlett球体检验。KMO检验用于检查变量间的相关性和偏相关性,取值在0~1之间。KMO统计量越接近于1,变量间的相关性越强,偏...
运动学解析~旋转矩阵推导
极坐标系和直角坐标系是等价的,在极坐标系下,一个点可以表示为(r,θ),在直角坐标系下,表示为(x,y)。那么A点在老坐标系下的坐标值(x,y)是已知的,因此只要知道,新坐标系相对于老坐标系的旋转情况(旋转矩阵)就能知道,B点在老坐标系下的坐标(x',y')了。在极坐标系下一个点的坐标,用角度和长度表示即可,在直角坐标系下一个点的坐标,用x,y来表示。A点相对于老坐标系(黑色坐标系)的方位与B点相对于新坐标系(红色坐标系)的方位一致,因此。(3)因此得出(x',y')=旋转矩阵*(x,y)
1万+



被折叠的 条评论
为什么被折叠?



