Scipy:生成NxN离散余弦矩阵

2024-02-10

使用 scipy,有没有一种简单的方法来模拟 MATLAB 的行为dctmtx对于给定的 N 返回一个 NxN DCT 矩阵的函数?有scipy.fftpack.dctn但这仅适用于 DCT。 如果我不想使用 scipy 之外的其他依赖项,我是否必须从头开始实现它?


DCT 是一种线性变换,因此获取变换矩阵的一种方法是将其应用于单位矩阵。这是一个示例,我找到长度为 8 的序列的矩阵(将 8 更改为N对于一般情况):

In [124]: import numpy as np

In [125]: from scipy.fft import dct

In [126]: D = dct(np.eye(8), axis=0)

D是矩阵:

In [127]: D
Out[127]: 
array([[ 2.        ,  2.        ,  2.        ,  2.        ,  2.        ,  2.        ,  2.        ,  2.        ],
       [ 1.96157056,  1.66293922,  1.11114047,  0.39018064, -0.39018064, -1.11114047, -1.66293922, -1.96157056],
       [ 1.84775907,  0.76536686, -0.76536686, -1.84775907, -1.84775907, -0.76536686,  0.76536686,  1.84775907],
       [ 1.66293922, -0.39018064, -1.96157056, -1.11114047,  1.11114047,  1.96157056,  0.39018064, -1.66293922],
       [ 1.41421356, -1.41421356, -1.41421356,  1.41421356,  1.41421356, -1.41421356, -1.41421356,  1.41421356],
       [ 1.11114047, -1.96157056,  0.39018064,  1.66293922, -1.66293922, -0.39018064,  1.96157056, -1.11114047],
       [ 0.76536686, -1.84775907,  1.84775907, -0.76536686, -0.76536686,  1.84775907, -1.84775907,  0.76536686],
       [ 0.39018064, -1.11114047,  1.66293922, -1.96157056,  1.96157056, -1.66293922,  1.11114047, -0.39018064]])

验证一下D @ x相当于dct(x):

In [128]: x = np.array([1, 2, 0, -1, 3, 0, 1, -1])

In [129]: dct(x)
Out[129]: array([10.        ,  4.02535777, -1.39941754,  7.38025967, -1.41421356, -6.39104653, -7.07401092,  7.51550307])

In [130]: D @ x
Out[130]: array([10.        ,  4.02535777, -1.39941754,  7.38025967, -1.41421356, -6.39104653, -7.07401092,  7.51550307])

注意D @ x通常会比dct(x).


为了与Matlab的完全一致dctmtx https://www.mathworks.com/help/images/ref/dctmtx.html,添加参数norm='ortho'。例如,这里是dctmtx在 Octave 中(返回与 Matlab 中相同的数组):

octave:1> pkg load image
octave:2> dctmtx(4)
ans =

   0.50000   0.50000   0.50000   0.50000
   0.65328   0.27060  -0.27060  -0.65328
   0.50000  -0.50000  -0.50000   0.50000
   0.27060  -0.65328   0.65328  -0.27060

这是使用的计算scipy.fft.dct:

In [56]: from scipy.fft import dct

In [57]: dct(np.eye(4), axis=0, norm='ortho')
Out[57]: 
array([[ 0.5       ,  0.5       ,  0.5       ,  0.5       ],
       [ 0.65328148,  0.27059805, -0.27059805, -0.65328148],
       [ 0.5       , -0.5       , -0.5       ,  0.5       ],
       [ 0.27059805, -0.65328148,  0.65328148, -0.27059805]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scipy:生成NxN离散余弦矩阵 的相关文章

随机推荐

  • 使用 javascript 获取已安装扩展的列表

    我想弄清楚是否可以使用 javascript 获取所有已安装的浏览器扩展的列表 我明白这是可能的 chrome 使用 chrome extension 参考 火狐 使用 Application extensions all 但在 IE 和
  • F# 活动模式作为非静态成员

    我不确定是否允许非静态公共成员活动模式 但您可以定义它们而不会引起编译器的抱怨 如果允许的话 匹配的语法是什么 编译器给我 FooBar2 doSomething 中的 Foo 类型不匹配 期待一个 a gt Choice lt b c g
  • 在 onHandleIntent 之前捕获 IntentService Intent

    我有一个 IntentService 它将要进行的 Web 服务调用排队 我将一个整数作为 Extra 传递给每个 Intent 它定义了要进行的 Web 服务调用的类型 我想创建一种情况 如果执行特定 Web 服务的 Intent 被传递
  • javascript有API这样的概念吗

    我主要用java编程 几乎没有javascript知识 我的问题是 javascript 是否允许使用 API 例如 我有一个 javascript 应用程序 我希望向其中公开一些函数 例如中间件 API 集 这个中间件也可以用 javas
  • 修改 tableView 中的 UITableViewCellaccessoryType 时出现问题:didSelectRowAtIndexPath:

    我有一个透明的表格视图 带有子视图 UIImageView 的 UIViewController 和位于 UIImageView 同级顶部的另一个子视图 UITableView 其背景 clearColor UITableViewCells
  • 将 Spark 数据帧插入 hbase

    我有一个数据框 我想将其插入到 hbase 中 我遵循这个文档 https hbase apache org book html sparksql dataframes 这就是我的数据框的样子 id name address 23 marr
  • C# 巨大的 2 维数组

    我需要在 C WinForms 中声明连续超过 20000 个项目的方阵 我读到 32 位中 2GB Net 对象大小限制 以及 64 位操作系统中的相同情况 据我了解 唯一的答案是使用不安全的代码或使用 C 编译器构建的单独的库 这个问题
  • Java Swing JTable 以编程方式选择多行

    我有一个包含多行的 JTable 每一行都通过散点图上的 Point 呈现 我要做的是 当在散点图上选择给定点时 我必须将此选择与 JTable 中相应行的选择相关联 我有一个整数代表我必须突出显示的行 我尝试的是 JTable table
  • 如何在toastr中显示确认对话框

    我有以下代码用于控制器中的删除按钮 scope removes function scope toastr success Delete all br br
  • 如何解析包含逗号的值的 CSV?

    假设您有一个字符串如下 str one value two value three cool value four value 如何将其变成数组 如下所示 arr array one value two value three cool v
  • 将 String 变成只有 1 行

    我的输出基本上是一个段落 当我尝试在字符串中搜索子字符串时 如果该子字符串被分割 它就不起作用 如何使段落字符串只有 1 行 示例字符串 I have an output that is basically a paragraph and
  • GNOME 的 Java-Atk-Wrapper 中的错误 - 如何禁用 Swing 组件或应用程序的可访问性?

    我相信我在 GNOME Accessibility 的 Java 包装器中发现了一个错误 导致使用 Tree 或 Table UI 的 Scala Java 应用程序出现严重的性能问题 bug https github com GNOME
  • 点运算符和范围解析运算符有什么区别

    我只是想知道 之间的区别 运算符和 运算符 前者 点 用于访问对象的成员 后者 双冒号 用于访问命名空间或类的成员 考虑以下设置 namespace ns struct type int var 在这种情况下 要引用作为命名空间成员的结构
  • SystemExit:在 iPython Notebook 中调用 parse_args() 时出现 2 错误

    我正在学习使用 Python 和 scikit learn 并执行以下代码块 最初来自http scikit learn org stable auto examples document classification 20newsgrou
  • 我怎样才能最小化这个功能?

    我试图证明there https math stackexchange com questions 4062632 finding the right epsilon某个函数不能为负值 由于我无法证明 也无法说服自己这是真的 所以我将函数编
  • R SVM 对于缺失数据的预测返回 NA

    我尝试使用 e1071 包中经过训练的 SVM 进行预测 但我的数据包含一些缺失值 NA 当该实例有任何缺失值时 我希望返回的预测为 NA 我尝试使用 na action na pass 如下 但它给了我一个错误 名称错误 ret2 如果我
  • 尝试理解 Jasmine 的 toHaveBeenCalled() 匹配器

    我是新来的jasmine这是我的src我在其中创建的文件Auth class function Auth Auth prototype isEmpty function str return str 0 str length Auth pr
  • 谷歌地图 API 发生变化?

    我使用 google 地图 开放图层和 dojo 工具包为 Web 应用程序构建了一个地图组件 它加载了谷歌地图并绘制了数据点 直到今天凌晨 一切都工作得很好 但突然地图停止加载 没有 JavaScript 错误 打开图层和 google
  • 通过“python setup.py test”将命令行参数传递给nose

    套餐设置 我已经构建了一个Python包 它使用nose http nose readthedocs io en latest 供测试用 所以 setup py包含 test suite nose collector tests requi
  • Scipy:生成NxN离散余弦矩阵

    使用 scipy 有没有一种简单的方法来模拟 MATLAB 的行为dctmtx对于给定的 N 返回一个 NxN DCT 矩阵的函数 有scipy fftpack dctn但这仅适用于 DCT 如果我不想使用 scipy 之外的其他依赖项 我