问题标签 [toeplitz]

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 投票
0 回答
691 浏览

python - Python:使用 scipy.linalg.solve_toeplitz 求解线性 Toeplitz 系统很慢

我正在尝试有效地解决 Python 3.6 中的以下线性系统:

b = A x

其中 A 是 N x N Toeplitz 矩阵(即,从左到右的对角线是常数),x, b 是 N x N 矩阵。在 Scipy 中实现为 scipy.linalg.solve_toeplitz 的 Durbin-Levinson 应该利用 A 的结构有效地解决上述系统,并且当 x,b 是向量时确实可以做到这一点。

但是,当 x, b 是矩阵时,它比 scipy.linalg.solve 和 numpy.linalg.solve 慢得多(请参阅我的测试脚本的输出)

执行时间在我的应用程序中至关重要。我有哪些选择可以加快流程并利用 Toeplitz 结构?

scipy.linalg.solve_toeplitz 速度慢的一个可能解释是,它对矩阵输入使用慢速 for 循环来求解 x、b 为向量的单个线性系统(一次求解每一列)。

脚本输出:

文档:https ://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.linalg.solve_toeplitz.html

0 投票
1 回答
693 浏览

python - Toeplitz matrix with an image

I'm struggling to understand something. So far I understood this : x is 3x3 matrix and W is a 2x2 matrix

a) extend W to be a 4X9 matrix and flatten x to be 9x1

b) multiply the Toeplitz matrix and the vector

enter image description here

the part that I don't understand is how can do the same thing with an 400 * 400 image grayscaled before and 3x3 filter.

x = 400 * 400

w = 3 * 3

h = 9 * 160 000

x_flatten = 160 000

output = x_flatten * h ??

I can't figure it out how can I play with the shape to achieve the same principles to be able to retrieve my image after

thank you

0 投票
1 回答
111 浏览

matlab - 如何有效地做一个托普利茨矩阵matlab

假设我有一个向量x和 2 个常量,初始化如下:

现在,我想构建这个矩阵:

在此处输入图像描述

但在这种情况下,例如 x(q-1) = x(-1) 不存在,所以我希望它为 0,我想知道是否有办法用最少的代码行来做到这一点。请注意,矩阵可以用函数编写toeplitz(),但我不知道如何x用零替换向量的不存在位置。

我希望有一个人可以帮助我。谢谢您的回答。

0 投票
1 回答
283 浏览

matrix - 2D 转置卷积可以表示为 Toeplitz 矩阵乘法吗?

2D 转置卷积运算可以表示为与 Toeplitz 矩阵的矩阵乘法,就像普通卷积可以做的那样?

我想将一些想法从密集网络推广到卷积网络。对于普通卷积,这不是问题,因为它们可以表示为与 Toeplitz 矩阵的矩阵乘法。但是我找不到转置卷积的清晰数学公式,所以我不确定这种情况。

0 投票
1 回答
334 浏览

arrays - How to print a circulant matrix (toeplitz), in MATLAB, where each input is a 3D matrix of dimention m x m x 3?

I know how to use toeplitz function in MATLAB to create a circulant matrix of 1 D vector. However, I am trying to create a circulant block

For example, I have 3 matrices of size (2,2,3) where third dimension is R,G, B: Below I am showing the sample values of row and column of each matrix. First Matrix:

Second Matrix:

Third Matrix:

Now I want to create a circulant matrix which looks like this

Note, I want to be able to move the entire block of the matrix to the right in the subsequent lines, and not just the first line of the matrix. Please note, i want to preserve the third dimensions of these matrices w(which has color dimension in them)

Can someone tell me how to go ahead with it? I thought of making an array I already have a 3D matrix, and don't know how to make an array of the array here, if it will help at all.

References:

0 投票
1 回答
113 浏览

python - 给定 N 的 toeplitz 矩阵

对于给定的 N,我需要创建以下矩阵: 在此处输入图像描述

我明白了:

将创建一个 Toeplitz 矩阵。但这不是上面给出的确切矩阵。
感谢你的帮助

0 投票
1 回答
156 浏览

python - 如何使用循环而不是内置函数在 Python 中生成 Toeplitz 矩阵

我正在尝试在 Python 中使用 for 循环生成一个简单的 Toeplitz 矩阵

应该工作,除非我遗漏了什么,但给出了这个错误:

如何在没有 scipy 的内置 toeplitz() 函数的情况下使它成为 Toeplitz 你能帮忙吗?

0 投票
1 回答
37 浏览

r - 找出输入是否是 R 中的 Toeplitz 矩阵

给定一个随机矩阵(任意大小!),编写一个函数来确定该矩阵是否为 Toeplitz 矩阵。在线性代数中,托普利茨矩阵是这样一种矩阵,其中从左上角到右下角的任何给定对角线上的元素都是相同的。

这是一个例子:

所以我们的函数应该接收这样的矩阵并在满足条件时返回 TRUE。

要测试该功能,可以使用stats::toeplitz()生成托普利兹矩阵。例如,我们函数的预期输出应该是:

0 投票
0 回答
111 浏览

python - 如何将 scipy convolve2d 应用为矩阵乘法和环绕

tl;博士——scipy 的 convolve2d 实际上是如何进行卷积操作的?我找到了通往 Toeplitz 矩阵的方法,但我对如何实际创建 Toeplitz 矩阵感到困惑。

前几天我在阅读康威的[生命游戏](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life规则),我突然想到游戏中的所有约束都是线性约束,这意味着生命游戏应该符合线性程序形式,因为未来的棋盘状态必须遵循以下线性约束:


游戏板是一个 NxM 矩阵。
计算游戏板中每个节点的邻居所需的内核是一个 3x3 矩阵。

因此我们可以将这个内核应用到游戏板上的每个位置,以计算每个节点的存活邻居的数量。然后我们可以对邻居计数应用约束,这将确定给定节点是打开还是关闭并生成下一个板状态。

但是,要使用凸求解器,例如 cvx,您不能传入 convolve2d 之类的函数,而是需要传入该函数对其自身进行编码的矩阵。

为了得到我们的线性算子,我们可以从一个简单的版本开始。我们可以手动提取 game_board 的正确组件(一个 nxm 矩阵)并将其与邻居内核相乘:https ://imgur.com/a/desSZAd 。但这似乎真的很脆弱,需要大量的手工计算。

所以,我想,如果我们把 game_board 展平呢?然后我们仍然需要将我们的内核应用到每个正确的权重上,但这应该有一些关于内核如何移动游戏板的结构。

https://imgur.com/a/oTHlxx1

第一个图像是扁平化。第二个图像是循环和堆叠内核向量以将卷积应用为一个 MM。第三个图像是移位内核与游戏板的乘积。

我又做了几个 Gamma 术语,显然有一些结构,但我没有看到如何以编程方式创建它。

所有这些都让我想到了 Toeplitz 矩阵,这似乎正是我正在寻找的。我正在应用此处找到的方法:https ://stackoverflow.com/a/51865516/8334507但是当我这样做时我没有得到wrap-ing 功能,它还将我的输出矩阵的维度扩展到(N+2)x(M+2)所以,一个 8x8 板变成 10x10。

0 投票
1 回答
46 浏览

r - 从向量制作对称矩阵

我必须将向量转换为矩阵

结果矩阵应为

我知道它是一种 toeplitz 矩阵,并且 R 中有可用的包,但我必须使用嵌套的 for 循环来做到这一点。