如何将带有meshgrid和数组的Matlab代码转换为Python代码?

pythonraptor

我正在尝试编写一个程序,该程序构造矩阵并对其执行奇异值分解。我正在评估ax^2 +bx + 1网格上的功能然后,我用a制作一个统一的网格b矩阵的行对应于不同的二次系数,而每一列对应于评估函数的网格点。

Matlab代码在这里:

% Collect data

x = linspace(-1,1,100);

[a,b] = meshgrid(0:0.1:1,0:0.1:1);

D=zeros(numel(x),numel(a));
sz = size(D)
% Build “Dose” matrix

for i=1:numel(a)

D(:,i) = a(i)*x.^2+b(i)*x+1;

end

% Do the SVD:

[U,S,V]=svd(D,'econ');

D_reconstructed = U*S*V';

plot(diag(S))
scatter3(a(:),b(:),V(:,1))

这是我尝试的解决方案:


import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 100)

def f(x, a, b):
    return a*x*x + b*x + 1

a, b = np.mgrid[0:1:0.1,0:1:0.1]
#a = b = np.arange(0,1,0.01)

D = np.zeros((x.size, a.size))

for i in range(a.size):
    D[i] = a[i]*x*x +b[i]*x +1

U, S, V = np.linalg.svd(D)

plt.plot(np.diag(S))

fig = plt.figure()
ax = plt.axes(projection="3d")


ax.scatter(a, b, V[0])

但我总是会收到广播错误,但不确定如何解决。

安德拉斯·迪克(Andras Deak)

首先,在MATLAB中您要分配给D(:,i),而在python中您要分配给D[i]后者等效D[i, ...]于您的情况D[i, :]相反,您似乎需要D[:, i]

其次,在MATLAB中使用线性索引进入2d数组(即ab)将为您提供扁平化的视图。如果使用numpy进行操作,则会得到数组的切片,就像我在提到的那样D[i]

您可以通过附加(或重塑)您的数组来消除循环播放和获取所需的2d数组.ravelab

x = np.linspace(-1, 1, 100)[:, None]  # inject trailing singleton for broadcasting
a, b = np.mgrid[0:1:0.1, 0:1:0.1]
D = a.ravel() * x**2 + b.ravel() * x + 1

这种工作方式是x具有形状(100, 1)后我们注入尾随单身(在MATLAB尾随单身是隐含的,在numpy的领先者),都a.ravel()b.ravel()具有形状(10*10,)是与兼容(1, 10*10),使广播可能进入形状(100, 10*10)你也可以更换调用ravel

a, b = np.mgrid[...].reshape(2, -1)

这是我有时使用的技巧,但是如果您不熟悉该模式,则很难阅读。

旁注:最好使用示例数据,其中尺寸最终将具有不同的大小,以便您注意到是否最终要换位。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将带有几行代码的字符数组转换为data.frame?

来自分类Dev

如何将带有函数的字符串转换为Python中的可执行代码?

来自分类Dev

如何将带有对象和数组索引的字符串转换为json

来自分类Dev

如何将带有字符代码的字符串转换为带引号的形式

来自分类Dev

将带有参数数组的PHP curl POST请求转换为Python代码

来自分类Dev

如何将带有数据的数组转换为小部件

来自分类Dev

如何将带有numpy数组的嵌套字典转换为json并返回?

来自分类Dev

如何将带有数字的字符串转换为数组?

来自分类Dev

如何将带有“ []”的字符串转换为整数数组

来自分类Dev

如何将带有字符串的嵌套数组转换为 JavaScript 中的数字?

来自分类Dev

如何将带有嵌套数组的类对象转换为数据表?

来自分类Dev

如何将带有数组的字符串变量转换为带有数组的整数变量

来自分类Dev

如何将带有插槽的python类转换为字典?

来自分类Dev

如何将带有元组键的python字典转换为pandas多索引数据框?

来自分类Dev

如何将带有文件和参数的python3 post请求转换为curl

来自分类Dev

如何将带有对象的数组转换为一个对象,例如Laravel Request对象

来自分类Dev

当Array.prototype.slice.call不起作用时,如何将带有属性列表的对象转换为数组?

来自分类Dev

如何将Matlab代码转换为jar

来自分类Dev

如何将Matlab代码转换为图像?

来自分类Dev

如何将此表达式转换为 MATLAB 代码

来自分类Dev

将matlab代码转换为python代码

来自分类Dev

将带有计数器的while循环转换为更多pythonic代码

来自分类Dev

代码动画-将带有选中标记的加载圆圈gif转换为基于JS的动画

来自分类Dev

如何将CSS代码转换为JavaScript中的数组

来自分类Dev

将带有对象的数组转换为数组

来自分类Dev

如何将带有django标签的javascript代码加载到我的django模板中

来自分类Dev

如何将带有ID标签的图例添加到我的代码中

来自分类Dev

如何将带有django标签的javascript代码加载到我的django模板中

来自分类Dev

如何将带有ClientId的Google Analytics(分析)跟踪代码导入PHP页脚?

Related 相关文章

  1. 1

    如何将带有几行代码的字符数组转换为data.frame?

  2. 2

    如何将带有函数的字符串转换为Python中的可执行代码?

  3. 3

    如何将带有对象和数组索引的字符串转换为json

  4. 4

    如何将带有字符代码的字符串转换为带引号的形式

  5. 5

    将带有参数数组的PHP curl POST请求转换为Python代码

  6. 6

    如何将带有数据的数组转换为小部件

  7. 7

    如何将带有numpy数组的嵌套字典转换为json并返回?

  8. 8

    如何将带有数字的字符串转换为数组?

  9. 9

    如何将带有“ []”的字符串转换为整数数组

  10. 10

    如何将带有字符串的嵌套数组转换为 JavaScript 中的数字?

  11. 11

    如何将带有嵌套数组的类对象转换为数据表?

  12. 12

    如何将带有数组的字符串变量转换为带有数组的整数变量

  13. 13

    如何将带有插槽的python类转换为字典?

  14. 14

    如何将带有元组键的python字典转换为pandas多索引数据框?

  15. 15

    如何将带有文件和参数的python3 post请求转换为curl

  16. 16

    如何将带有对象的数组转换为一个对象,例如Laravel Request对象

  17. 17

    当Array.prototype.slice.call不起作用时,如何将带有属性列表的对象转换为数组?

  18. 18

    如何将Matlab代码转换为jar

  19. 19

    如何将Matlab代码转换为图像?

  20. 20

    如何将此表达式转换为 MATLAB 代码

  21. 21

    将matlab代码转换为python代码

  22. 22

    将带有计数器的while循环转换为更多pythonic代码

  23. 23

    代码动画-将带有选中标记的加载圆圈gif转换为基于JS的动画

  24. 24

    如何将CSS代码转换为JavaScript中的数组

  25. 25

    将带有对象的数组转换为数组

  26. 26

    如何将带有django标签的javascript代码加载到我的django模板中

  27. 27

    如何将带有ID标签的图例添加到我的代码中

  28. 28

    如何将带有django标签的javascript代码加载到我的django模板中

  29. 29

    如何将带有ClientId的Google Analytics(分析)跟踪代码导入PHP页脚?

热门标签

归档