我正在尝试设置一个可变长度的零矩阵,其中有两列我可以输出while循环的结果(目的是使用它来存储来自Euler方法的步骤数据和调整后的时间步长).长度将由循环的迭代次数确定.
我想知道是否有一种方法可以在我运行循环时执行此操作,或者是否需要将其设置为开始,以及如何执行此操作.
对于向量V的大小为nx 1,我想创建二进制指示符矩阵中号的大小为nx最大(V) ,使得所述行条目中号具有1中的相应的列的索引,0否则.
例如:如果V是
V = [ 3
2
1
4]
Run Code Online (Sandbox Code Playgroud)
指标矩阵应该是
M= [ 0 0 1 0
0 1 0 0
1 0 0 0
0 0 0 1]
Run Code Online (Sandbox Code Playgroud) 这可能很容易解决.我有一个mat500行×335列的2D矩阵和一个dat120425行的data.frame.该data.frame dat有两列I和J,它是整数索引的行,列的mat.我想将值添加mat到行的行中dat.
这是我的概念失败:
> dat$matval <- mat[dat$I, dat$J]
Error: cannot allocate vector of length 1617278737
Run Code Online (Sandbox Code Playgroud)
(我在Win32上使用R 2.13.1).深入挖掘,我发现我误用了矩阵索引,因为看起来我只得到了一个子矩阵mat,而不是我预期的单维数组值,即:
> str(mat[dat$I[1:100], dat$J[1:100]])
int [1:100, 1:100] 20 1 1 1 20 1 1 1 1 1 ...
Run Code Online (Sandbox Code Playgroud)
我期待着类似的东西int [1:100] 20 1 1 1 20 1 1 1 1 1 ....使用行,列索引索引2D矩阵以获取值的正确方法是什么?
我有一个NumPy ndarray我想添加行/列标题.
数据实际上是7x12x12,但我可以这样表示:
A=[[[0, 1, 2, 3, 4, 5],
[1, 0, 3, 4, 5, 6],
[2, 3, 0, 5, 6, 7],
[3, 4, 5, 0, 7, 8],
[4, 5, 6, 7, 0, 9],
[5, 6, 7, 8, 9, 0]]
[[0, 1, 2, 3, 4, 5],
[1, 0, 3, 4, 5, 6],
[2, 3, 0, 5, 6, 7],
[3, 4, 5, 0, 7, 8],
[4, 5, 6, 7, 0, 9],
[5, 6, 7, 8, 9, 0]]]
Run Code Online (Sandbox Code Playgroud)
其中A是我的2x6x6阵列.
如何在第一行和第一列中插入标题,以便每个数组在我的CSV …
iluropoda_melanoleuca bos_taurus callithrix_jacchus canis_familiaris
ailuropoda_melanoleuca 0 84.6 97.4 44
bos_taurus 0 0 97.4 84.6
callithrix_jacchus 0 0 0 97.4
canis_familiaris 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
这是我所拥有的python矩阵的简短版本.我在上三角形中有信息.是否有一个简单的功能可以将上三角形复制到矩阵的下三角形?
我想用来hclust聚类数据.但我不想使用"dist()"来生成dist对象.然后我发现我不能将对称矩阵作为距离矩阵传递给hclust.
如何将对称矩阵转换为"dist"对象?
Python的新手,在numpy中挣扎,希望有人可以帮助我,谢谢!
from numpy import *
A = matrix('1.0 2.0; 3.0 4.0')
B = matrix('5.0 6.0')
C = matrix('1.0 2.0; 3.0 4.0; 5.0 6.0')
print "A=",A
print "B=",B
print "C=",C
Run Code Online (Sandbox Code Playgroud)
结果:
A= [[ 1. 2.]
[ 3. 4.]]
B= [[ 5. 6.]]
C= [[ 1. 2.]
[ 3. 4.]
[ 5. 6.]]
Run Code Online (Sandbox Code Playgroud)
问题:如何使用A和B生成C,就像在matlab中一样C=[A;B]?
我有一个5列4行的矩阵.我还有一个3列的向量.我想分别在矩阵的每一行中从列3,4和5中减去向量中的值.
b <- matrix(rep(1:20), nrow=4, ncol=5)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
c <- c(5,6,7)
Run Code Online (Sandbox Code Playgroud)
要得到
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 4 7 10
[2,] 2 6 5 8 11
[3,] 3 7 6 9 12
[4,] 4 8 7 10 13
Run Code Online (Sandbox Code Playgroud) 我正在网格中旋转骨架的骨骼,以获得低聚3D图形.在顶点着色器上它的应用就像这样.
GLSL:
vec4 vert1 = (bone_matrix[index1]*vertex_in)*weight;
vec4 vert2 = (bone_matrix[index2]*vertex_in)*(1-weight);
gl_Position = vert1+vert2;
Run Code Online (Sandbox Code Playgroud)
bone_matrix[index1]是一个骨骼的矩阵,是另一个骨骼bone_matrix[index2]的矩阵. weight指定vertex_in这些骨头的成员资格.问题是重量越接近.5,当施加旋转时,肘部的直径越大.我用大约10,000个顶点圆柱形状(带有梯度的重量)对它进行了测试.结果看起来像弯曲花园软管.
我从这些来源获得了加权方法.它实际上是我能找到的唯一方式:
http://www.opengl.org/wiki/Skeletal_Animation
http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.html
http://blenderecia.orgfree.com /blender/skinning_proposal.pdf

左边是形状如何开始,中间是上面方程如何旋转它,右边是我的目标.中间点是加权的0.5.弯曲度越大越好,180度直径为零.
因此,考虑到我可能没有考虑的选项或其他选项,其他人如何避免这种捏合效应?
编辑: 我已经使用四元数工作SLERP,但我选择不使用它,因为GLSL本身不支持它.我不能像汤姆所描述的那样让几何SLERP工作.我让NLERP在前90度工作,所以我在每个关节之间增加了一个"骨头".因此,为了将前臂弯曲40度,我将肘部和前臂各弯曲20度.这消除了挤压效应,代价是加倍骨量,这不是理想的解决方案.
我正在研究2自由度(俯仰和滚动)的运动模拟器.我正在从游戏中读取变换矩阵,我需要获得角度并发送到硬件来驱动电机.由于欧拉角有奇点,我不能真正使用它们.它的行为如下:

什么时候应该这样:

我准备了在线示例以更好地显示问题:
// Get euler angles from model matrix
var mat = model.matrix;
mat.transpose();
var e = new THREE.Euler();
e.setFromRotationMatrix(mat, 'XZY');
var v = e.toVector3();
var pitch = -v.z;
var roll = -v.x;
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/qajro0ny/3/
据我了解,这里有两个问题.
我已经读过关于万向节锁甚至实现了euler过滤器,但是没有按预期工作.关于万向节锁的大多数建议是使用四元数,但我不能用四元数驱动物理运动(或者我可以?).
轴顺序在这里并不重要,因为更改它只会将奇点从一个轴移动到另一个轴.
我需要以其他方式处理这个问题.
我尝试用矩阵乘以轴向量,然后使用十字和点积来获得角度,但这也失败了.我认为还应该进行轴重投,以实现这一目标,但我无法弄明白.但有些事情告诉我,这是正确的方法.它是这样的:http://jsfiddle.net/qajro0ny/53/
然后我提出了不同的想法.我知道以前的位置,所以可能会做以下事情:
所以我试过了......它奏效了!在任何方向上都没有奇点,在俯仰,滚转和偏航方面完美的360度旋转.完美的解决方案!除了......它不是.帧没有同步,所以经过一段时间的角度远离他们应该是什么.我一直在考虑某种同步机制,但我认为这不是正确的方法.
它看起来像这样:http://jsfiddle.net/qajro0ny/52/
和相同的逻辑,但直接与矩阵:http://jsfiddle.net/qajro0ny/54/
我搜索了网页的高低,我已经阅读了几十篇论文和其他问题/帖子,我简直无法相信没有什么能真正起作用.
我可能不理解或遗漏某些东西,所以这里是我发现和尝试的一切:
链接:http://pastebin.com/3G0dYLvu
代码:http://pastebin.com/PiZKwE2t(我把它们放在一起,所以它很乱)
我一定是错过了什么,或者我是从错误的角度看这个.