Tag: 矩阵

如何转置矩阵?

我使用c#制作了8×8矩阵,现在我需要转置矩阵。 你能帮我转置矩阵吗? 这是我的矩阵 public double[,] MatriksT(int blok) { double[,] matrixT = new double[blok, blok]; for (int j = 0; j < blok ; j++) { matrixT[0, j] = Math.Sqrt(1 / (double)blok); } for (int i = 1; i < blok; i++) { for (int j = 0; j < blok; j++) { matrixT[i, j] = […]

如何计算矩阵行列式? n * n或仅5 * 5

大家。 我需要找到矩阵n*n (或5*5 )行列式。 我有一个从Pascal翻译过的函数,但是有一个INDEX OUT OF RANGE EXCEPTION 。 有人能帮助我吗? 这是我的代码: public static double DET(double[,] a, int n) { int i, j, k; double det = 0; for (i = 0; i < n – 1; i++) { for (j = i + 1; j < n + 1; j++) { det = a[j, […]

矩阵/坐标转换顺序

我有两个要点: Point [] original; AND Point [] transformed; 这些变换后的数组只是应用了变换的原始副本。 例: matrix.Rotate(5f); matrix.Scale(.8f, 1.1f); matrix.Translate(30f, 18f); matrix.TransformPoints(transformed); 原点已知。 转换值已知。 应用变换的顺序是未知的。 如何计算/推断变换的顺序? 编辑 只有一轮转型。 一轮可以包含至多三个转换,如下所示。 应用的唯一转换是旋转,缩放和平移的任意组合。 为了给它一些现实世界的背景,考虑使用已知兴趣点的图像。 您打印图像,扫描并尝试再次阅读。 图像包含方向标记,允许我计算扫描过程中应用的变换。 现在,蛮力方法将是: 读取扫描图像。 计算扫描图像的旋转。 在扫描图像上应用旋转。 计算旋转图像的比例。 在旋转的图像上应用比例。 计算缩放图像上的平移。 在缩放图像上应用翻译。 您现在可以使用原始点从已处理图像中读取感兴趣的点,就像没有变换一样。 当然这种方法很昂贵。 500MB图像一次需要在内存中至少有两个副本,并且必须使用图形对象进行转换。 这个问题的前提是只读取一次图像,计算所有变换并将它们应用于坐标而不是图像本身。 使用变换后的坐标来读取兴趣点。 这就是“转换顺序”问题的来源。下面有一些非常有用的答案,我希望这可以清除背景。

如何在C#中一次旋转,缩放和转换矩阵?

好的,这应该是一个简单的矩阵问题,但我对矩阵的理解有些局限。 这是场景:我有一个1px乘1px精灵,我希望按比例缩放x和y(每边不同的数量),然后我想将该精灵旋转一定角度,然后我希望能够精确定位整个事物(从左上角或中心,对我没有任何影响)。 到目前为止,我的代码模糊地接近,但是根据我传入的角度,它往往会被一些随机的数量所取消。 我认为这样做会: Point center = new Point( 50, 50 ); float width = 60; float height = 100; float angle = 0.5; Vector3 axis = new Vector3( center.X, center.Y, 0 ); axis.Normalize(); Matrix m = Matrix.Scaling( width, height, 0 ) * Matrix.RotationAxis( axis, angle ) * Matrix.Translation( center.X, center.Y, 0 ); 但它倾向于缩小旋转线的缩小范围,尽管我认为它的定位是正确的。 我也试过这个: […]

如何在C#中乘以矩阵?

我不能让这种方法起作用。 它打算将矩阵乘以给定的矩阵。 有人可以帮我纠正吗? class Matriz { public double[,] structure; //Other class methods public void multiplyBy(Matrix m) { if (this.structure.GetLength(1) == m.structure.GetLength(0)) { Matriz resultant = new Matriz(this.structure.GetLength(0), m.structure.GetLength(1)); for (int i = 0; i < this.structure.GetLength(0) – 1; i++) { for (int j = 0; j < m.structure.GetLength(1) – 1; j++) { resultant.structure[i, j] = […]

如何创建和使用(颜色)框C#WPF的矩阵

我必须使用WPF App进行某种类型的游戏,其中包含一些颜色框矩阵(例如10×10)。 点击一些它必须消除自己和周围的盒子相同的颜色,如果有超过3,并在消除后这些框授予一些随机颜色。 我在WPF应用程序方面相当新,但我对C#编程有一些了解,我无法弄清楚应该从哪里开始。 对我来说最困难的部分是“产生”这个盒子并像矩阵一样使用它。 到目前为止,我发现了一些我认为会对我有帮助的项目 ,但并非如此。 有人可以从我可以开始的地方导航,这是最相关的方式。 谢谢。

在C#中计算NxN矩阵行列式

你如何计算NxN矩阵C#的行列式?

旋转M * N矩阵(90度)

我怎样才能旋转矩阵 |3 4 5 6 8| |5 4 3 2 6| |3 3 7 8 9| 至 |8 6 9| |6 2 8| |5 3 7| |4 4 3| |3 5 3| 因为我见过的所有算法都是N * N矩阵。

在c#中有效地复制对称矩阵

我想在一个数组中存储一个对称矩阵 对于矩阵我正在这样做 double[,] mat = new double[size,size]; for (int i = 0; i < size; i++) { for (int j = 0; j <= i; j++) mat[i, j] = mat[j, i] = (n * other_matrix[i,j]); } 如果我想存储在一个数组中 double[] mat = new double[size*size]; 代替 double[,] mat 什么是最有效的方式? 使用mat[i*n+j] ?

如何在c#中重塑数组

我在c#中有一个3D字节数组,我从位图中读取了这个数组: byte[w, h, 3] 将此数组重塑为2D(线性)forms的最简单,性能更友好的方法是什么? byte[w*h, 3] 换句话说,我想保持通道数(特征)但是呈线性形状(而不是方形) 让我试着说明输入和期望的输出: 输入: |(r1,g1,b1) (r2,g2,b2) (r3,g3,b3)| |(r4,g4,b4) (r5,g5,b5) (r6,g6,b6)| |(r7,g7,b7) (r8,g8,b8) (r9,g9,b9)| 注意arr [0,0,0] = r1,arr [0,0,1] = g1,arr [0,0,2] = b1等。 并输出: |(r1,g1,b1) (r2,g2,b2) (r3,g3,b3) (r4,g4,b4) (r5,g5,b5) (r6,g6,b6) …|