标签: matrix

从矩阵中获取所有对角矢量

我试图弄清楚如何获得矩阵的所有对角线.例如,假设我有以下矩阵:A < - 矩阵(1:16,4)

使用该diag(A)函数将返回

[1]  1  6 11 16
Run Code Online (Sandbox Code Playgroud)

除了主要的对角线,我想要一个上面和下面所有对角线的列表.

5 10 15
2  7 12
9 14
3  8
4
13
Run Code Online (Sandbox Code Playgroud)

我找到了以下链接/sf/answers/913480571/,它给我直接在主要的上方和下方的对角线,但我似乎无法弄清楚如何扩展代码以获得任何大小的其余部分矩阵.我尝试了两个嵌套for循环,因为看起来某种矩阵下标的递增会产生我正在寻找的结果.我尝试在for循环中使用ncol(A),nrow(A),但似乎无法找出正确的组合.另外我知道for循环通常在R中不受欢迎.

给出的代码是:

diag(A[-4,-1])
diag(A[-1,-4])
Run Code Online (Sandbox Code Playgroud)

它返回了两个对角线,包括上部和下部

当然这是一个方阵,并不是我想要执行的所有矩阵都是正方形的.如有必要,可以使用NA填充非正方形区域.我需要的答案可能是页面上的其他答案之一,但最初的问题涉及手段,总和等,这增加了一层复杂性,超出了我的目的.我觉得解决这个问题的方法非常简单,但它并没有发生在我身上.我也很惊讶我无法在任何地方找到这个问题,这似乎是一个很常见的问题.也许我不知道这个问题的正确术语.

r matrix

22
推荐指数
2
解决办法
9569
查看次数

如何获取阵列的镜像(MATLAB)?

给定一个数组:

array1 = [1 2 3];
Run Code Online (Sandbox Code Playgroud)

我必须这样扭转它:

array1MirrorImage = [3 2 1];
Run Code Online (Sandbox Code Playgroud)

到目前为止,我获得了这个丑陋的解

array1MirrorImage = padarray(array1, [0 length(array1)], 'symmetric', 'pre');
array1MirrorImage = array1MirrorImage(1:length(array1));
Run Code Online (Sandbox Code Playgroud)

有更漂亮的解决方案吗?

arrays matlab matrix

21
推荐指数
3
解决办法
6万
查看次数

获取二维数组中的相邻元素?

我说有一个二维数组

0 0 0 0 0
0 2 3 4 0
0 9 1 5 0
0 8 7 6 0
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

我需要得到与1相邻的所有数字(2,3,4,5,6,7,8,9)

是否有一个不那么丑陋的解决方案:

topLeft = array[x-1][y-1]
top  = array[x][y-1]
topRight = array[x+1][y-1]
# etc
Run Code Online (Sandbox Code Playgroud)

谢谢!

language-agnostic arrays algorithm matrix multidimensional-array

21
推荐指数
3
解决办法
3万
查看次数

如何解决此错误:#include <gl/glut.h>"无法打开源文件gl/glut.h"

我在C++中做了一些OpenGL编程.

这是我的代码的一部分:

#include <time.h>
#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h> <<< Error here "Cannot open source file gl/glut.h"
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

编辑:我正在使用Microsoft Visual C++ Express Edition.对不起忘了提它

c++ opengl vector matrix

21
推荐指数
2
解决办法
12万
查看次数

CSS3矩阵旋转

我有一个CSS 3D立方体,我正试图向左/右/向上/向下旋转,因为它看起来像用户.如果我使用css rotation函数,那么我旋转轴,而不是立方体.

网上有很多关于X,Y,Z矩阵旋转计算的文章,但我现在花了好几天试图设置这个东西,这些信息都没有真正帮助我.

解决我的问题的方法是一个WebKitCSSMatrix对象,它有自己的旋转功能,可以起到魔力的作用.关于小提琴的一个例子:http://jsfiddle.net/joecritch/tZBDW/.但同样,这只依赖于Uppon Webkit,但我需要在这里进行交叉的讨论.

现在,成功的方法有三个步骤:

1)我需要获得当前矩阵,设置方向向量(上/下为1,0,0,左/右旋转为0,1,0)并设置角度.DONE.

2)我需要根据当前矩阵计算新的旋转矢量.DONE.

3)我需要通过新的矢量和角度实际旋转当前矩阵.问题.

var newMArray = deMatrix(".cube");//getting current matrix from CSS

var v = [vecX, vecY, vecZ, 0];//current vector (1,0,0) or (0,1,0)

var newV = newMVector(newMArray, v);//calculating new vector for current matrix

//getting the angle for each axis based on new vector
angleX = newV[0]*angle;
angleY = newV[1]*angle;
angleZ = newV[2]*angle;

this.rotateX -= angleX;
this.rotateY -= angleY;
this.rotateZ -= angleZ; 

//calculating the rotation matrix
var rotationXMatrix, …
Run Code Online (Sandbox Code Playgroud)

javascript 3d matrix css3

21
推荐指数
1
解决办法
2880
查看次数

在NumPy中将行向量转换为列向量

import numpy as np

matrix1 = np.array([[1,2,3],[4,5,6]])
vector1 = matrix1[:,0] # This should have shape (2,1) but actually has (2,)
matrix2 = np.array([[2,3],[5,6]])
np.hstack((vector1, matrix2))

ValueError: all the input arrays must have same number of dimensions
Run Code Online (Sandbox Code Playgroud)

问题是当我选择matrix1的第一列并将其放在vector1中时,它会转换为行向量,所以当我尝试与matrix2连接时,我得到一个维度错误.我能做到这一点.

np.hstack((vector1.reshape(matrix2.shape[0],1), matrix2))
Run Code Online (Sandbox Code Playgroud)

但是每次我必须连接矩阵和向量时,这对我来说太难看了.有更简单的方法吗?

python arrays numpy matrix

21
推荐指数
2
解决办法
5万
查看次数

相同内存使用不同大小的矩阵

当我发现一些奇怪的东西时,我对R中矩阵的内存使用感兴趣.在循环中,我使矩阵的列数增长,并为每个步骤计算对象大小,如下所示:

x <- 10
size <- matrix(1:x, x, 2)

for (i in 1:x){
  m  <- matrix(1, 2, i)
  size[i,2] <- object.size(m)
}
Run Code Online (Sandbox Code Playgroud)

这使

plot(size[,1], size[,2], xlab="n columns", ylab="memory")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

似乎具有2行和5,6,7或8列的矩阵使用完全相同的内存.我们怎么解释呢?

memory size r matrix

21
推荐指数
3
解决办法
763
查看次数

使用scipy在python中构建和更新稀疏矩阵

当我从文件中读取数据时,我正在尝试构建和更新稀疏矩阵.矩阵的大小100000X40000

更新稀疏矩阵的多个条目的最有效方法是什么?特别是我需要将每个条目递增1.

假设我有行索引 [2, 236, 246, 389, 1691]

和列索引 [117, 3, 34, 2757, 74, 1635, 52]

所以以下所有条目必须加1:

(2,117) (2,3) (2,34) (2,2757) ...

(236,117) (236,3) (236, 34) (236,2757) ...

等等.

我已经在使用,lil_matrix因为它在我尝试更新单个条目时给了我一个警告.

lil_matrix格式已经不支持多次更新. matrix[1:3,0] += [2,3]给我一个未实现的错误.

我可以通过单独递增每个条目来天真地做到这一点.我想知道是否有更好的方法来做到这一点,或者我可以使用更好的稀疏矩阵实现.

我的电脑也是一台普通的i5机器,内存为4GB,所以我要注意不要把它炸掉:)

python matrix scipy sparse-matrix python-2.7

21
推荐指数
3
解决办法
3万
查看次数

匈牙利算法:找到覆盖零的最小行数?

我正在尝试实施匈牙利算法,但我坚持第5步.基本上,给定一个n X n数字矩阵,我如何找到最小数量的垂直+水平线,以便覆盖矩阵中的零?

之前有人将这个问题作为一个重复,该方案中提到有不正确的,别人也跑进贴有代码的bug.

我不是在寻找代码,而是寻找能够绘制这些线条的概念......

编辑:请不要发布简单(但错误)贪心算法:给定此输入:

(0, 1, 0, 1, 1)
(1, 1, 0, 1, 1)
(1, 0, 0, 0, 1)
(1, 1, 0, 1, 1)
(1, 0, 0, 1, 0)
Run Code Online (Sandbox Code Playgroud)

我明确选择第2列(0索引):

(0, 1, x, 1, 1)
(1, 1, x, 1, 1)
(1, 0, x, 0, 1)
(1, 1, x, 1, 1)
(1, 0, x, 1, 0)
Run Code Online (Sandbox Code Playgroud)

现在我可以选择第2行或第1列,它们都有两个"剩余"零.如果我选择col2,我最终会在这条路径上找到错误的解决方案:

(0, x, x, 1, 1)
(1, x, x, 1, 1)
(1, x, …
Run Code Online (Sandbox Code Playgroud)

algorithm matrix greedy matching hungarian-algorithm

21
推荐指数
2
解决办法
9576
查看次数

如何在两个坐标系之间找到旋转矩阵?

有两个坐标系.我们知道原点的3D坐标和第二坐标系的轴相对于第一坐标系的3D矢量.那么我们如何才能找到将第一个坐标系转换为第二个坐标系的旋转矩阵?

在此输入图像描述

math geometry matrix computer-vision

21
推荐指数
1
解决办法
3万
查看次数