问题标签 [matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1617 浏览

math - 矩阵运算枚举通过 n 部图的所有路径

我有一个 n 部分(无向)图,作为邻接矩阵给出,例如这里的这个:

我想知道是否有一组矩阵运算可以应用于这个矩阵,这将导致一个矩阵“列出”这个图中的所有路径(长度为 n,即通过所有分区)。对于上面的示例,有路径 a->b->d 和 a->c->d。因此,我想得到以下矩阵作为结果:

第一条路径包含节点 a、b、d,第二条路径包含节点 a、c、d。如有必要,结果矩阵可能有一些全为 0 的行,如下所示:

谢谢!

PS我看过计算传递闭包的算法,但这些通常只告诉两个节点之间是否存在路径,而不是直接告诉哪些节点在该路径上。

0 投票
2 回答
2249 浏览

iphone - 如何在倒 Y 轴的角度处理平移矩阵

我的用户案例是一个 iphone 应用程序,我在其中对图像的缩放、旋转和平移进行动画处理。

因此,我将所有内容连接起来并将其提供给转换属性,但存在一个问题:

由于我的图像大小不同,因此正确定位它们是一个问题。我习惯了一个倒置的 y 轴坐标系,所以我希望我的图像在 y 轴上精确定位在 60 像素处。

那么,如何从原来的笛卡尔 y 轴变为倒置 y 轴的观点呢?

0 投票
3 回答
1215 浏览

perl - Perl中的矩阵矩阵

在我正在处理的 Perl 脚本中,我需要用其他几个矩阵构建一个矩阵。我查看了 CPAN 中的几个模块(Math::MatrixPDL::MatrixMath::Cephes::Matrix),但这些似乎都不支持这一点。

在 Octave 中,这很容易。这是一个类似于我正在尝试做的事情的例子:

似乎自己尝试这样做会很快变得混乱,这可能是这些模块不支持它的原因......那里有其他人需要这个吗?你解决了吗?

0 投票
10 回答
87667 浏览

c++ - 在 C++ 中创建矩阵的正确方法

我想为图创建一个邻接矩阵。因为我读到使用表单的数组是不安全的,matrix[x][y]因为它们不检查范围,所以我决定使用 stl 的向量模板类。我需要在矩阵中存储的只是布尔值。所以我的问题是,如果使用std::vector<std::vector<bool>* >*会产生过多的开销,或者是否有更简单的矩阵方法以及如何正确初始化它。

编辑:非常感谢您的快速回答。我刚刚意识到,我当然不需要任何指针。矩阵的大小将在开始时初始化,直到程序结束才会改变。这是一个学校项目,所以如果我写“好”的代码会很好,尽管技术上的性能并不是太重要。使用 STL 很好。使用诸如 boost 之类的东西可能不受欢迎。

0 投票
6 回答
51374 浏览

algorithm - 一种生成半正定矩阵的简单算法

我想生成正随机半定矩阵。我正在寻找一种算法,或者最好是用 C、matlab、java 或任何语言实现该算法的简单实现。

0 投票
3 回答
4065 浏览

opengl - OpenGL 投影矩阵

我有一个关于查看查看器及其投影平面以及如何准确计算应该创建的投影点的问题。

前任。原点处的查看器,在负 Z 方向上查看。z = -2 处的投影平面。点 (-6,1,-4)。

我看到一些网站在谈论使用相似的三角形,有些网站有一个矩阵来乘以它。对我来说,问题是我不知道如何设置任何一个。

我猜我的观众的观点是在原点 (0, 0, 0, 1)。当我搜索透视投影矩阵时,我找到了一个设置这样的矩阵的站点。

1 0 0 0
0 1 0 0
0 0 0 0
0 0 1 0

但是,据我所知,我的观察者的观点在 (0, 0, 0, 1) 处,那么投影对于它如何影响等式是没有意义的。该矩阵还需要根据公式进行调整以在此站点上进行设置:
http ://www.cs.nps.navy.mil/people/faculty/capps/iap/class2/viewing/projection.html

我只需要一点帮助来解决这个问题,我们在课堂上讨论的只是使用相似的三角形,这对我来说没有意义......

0 投票
3 回答
5739 浏览

java - 如何打印 JAMA 矩阵的列?

我使用 JAMA.matrix 包..如何打印矩阵的列

0 投票
2 回答
5190 浏览

c# - Direct3D 中的高效线条绘制(Transformation2D?)

背景:我正在使用 DirectX 的 SlimDX C# 包装器,并且正在使用 Sprite 类(传统上来自底层 dll 中的 Direct3DX 扩展)绘制许多 2D 精灵。我一次在屏幕上绘制了数百个精灵,性能非常棒——在我的四核上,它在我的整个游戏中使用了大约 3-6% 的处理器,包括 10,000 多个对象的逻辑,ai第二个线程上的例程等。所以很明显,精灵正在使用全硬件加速进行绘制,一切都应该是这样。

问题:当我开始引入对 Line 类的调用时,问题就出现了。一旦我画了 4 条线(用于拖动选择框),处理器使用率就会飙升至 13-19%。这只有四行!

我尝试过的事情:

  1. 关闭和打开线抗锯齿。
  2. 关闭和打开 GLLines。
  3. 围绕我的绘图调用手动调用 line.begin 和 line.end。
  4. 省略对 line.begin 和 line.end 的所有调用。
  5. 确保我对 line.draw 的调用不在 sprite.begin / sprite.end 块内。
  6. 在 sprite.begin / sprite.end 块内调用 line.draw。
  7. 渲染 4 行,或渲染 300。
  8. 关闭所有精灵和文本渲染,只保留 4 行的线渲染(看看这是否是某种模式更改问题)。
  9. 以上的大多数组合。

一般来说,这些都不会对性能产生重大影响。#3 将处理器使用率降低了大约 2%,但即便如此,它仍然比应有的水平高出 8% 或更多。最奇怪的是,上面的#7 对性能的影响绝对为零——4 行和 300 行一样慢。我唯一能想到的是,由于某种原因,这是在软件中运行的,和/或它导致图形卡在某种绘图模式之间不断来回切换。

矩阵法:

如果有人知道上述问题的任何解决方法,那么我很想听听!

但是我假设这可能只是directx内部的一个问题,所以我一直在追求另一条路线——制作我自己的基于精灵的线。本质上,我有一个 1px 的白色图像,我使用漫反射颜色和变换来绘制线条。这在性能方面很有效——画出 300 条这样的“线”使我处于我在四核上寻找的 3-6% 的处理器利用率性能范围内。

我的像素拉伸线技术有两个问题,我希望对变换更了解的人可以帮助我。这是我当前的水平线代码:

这是可行的,因为它在屏幕上大部分正确的位置绘制了大部分正确大小的线条。然而,事情似乎向右移动,这很奇怪。我不太确定我的矩阵方法是否正确:我只想将 1x1 精灵水平缩放一些像素,垂直缩放不同的像素。然后我需要能够定位它们——在中心点很好,我认为这就是我必须做的,但如果我能把它定位在左上角那就更好了。这似乎是一个简单的问题,但我对矩阵的了解很薄弱。

这将使纯水平线和纯垂直线对我有用,这是战斗的大部分内容。我可以忍受这一点,并在我目前使用斜线的位置使用其他类型的图形。但是,如果我有一种方法可以使用这种拉伸像素方法绘制有角度的线条,那就太好了。换句话说,例如,从 1,1 到 7,19 画一条线。使用矩阵旋转等,这似乎是可行的,但除了猜测和检查之外,我什至不知道从哪里开始,这将花费很长时间。

非常感谢任何和所有帮助!

0 投票
4 回答
34893 浏览

c# - 如何在 C# 中一次旋转、缩放和平移矩阵?

好的,这应该是一个简单的矩阵问题,但是我对矩阵的理解有些有限。这是场景:我有一个 1px x 1px 的精灵,我想按一定量 x 和 y 缩放(每边不同的量),然后我想将该精灵旋转某个角度,然后我希望能够精确定位整个事物(从左上角或中心,对我来说没有区别)。

到目前为止,我的代码模糊地接近,但根据我传入的角度,它往往会偏离一些随机量。

我认为这样做可以:

但它往往会缩小旋转线的比例,即使我认为它的定位是正确的。

我也试过这个:

这条线看起来完全正确,大小和形状都完全正确,但我根本无法正确定位它。如果我在上述调用结束时使用平移向量,或者如果我使用 Sprite.Draw 设置位置,则两者都无法正常工作。

这一切都在 SlimDX 中。我究竟做错了什么?

0 投票
5 回答
1200 浏览

c++ - Why do I get a segmentation fault (core dumped) when I try to allocate a 4D array?

I'm trying to allocate a large 4D matrix but I want to do it dynamically. When I just create the static matrix everything works fine so I know I have enough memory for now. However when I try and implement the same thing dynamically it breaks whenever I enter the third dimension and I need to get to a fourth! Can anyone tell me why this code does not work?

I have tried many different variations on this code, and even used malloc instead of new, but I cannot get it working. Any help will be greatly appreciated.