gpt4 book ai didi

python - 将Matlab代码转换为Python时的"data type not understood"

转载 作者:行者123 更新时间:2023-12-01 05:59:35 27 4
gpt4 key购买 nike

我正在尝试将以下代码从 MATLAB 中的 Trefethen 光谱方法转换为 Python。

% p6.m - variable coefficient wave equation

% Grid, variable coefficient, and initial data:
N = 128; h = 2*pi/N; x = h*(1:N); t = 0; dt = h/4;
c = .2 + sin(x-1).^2;
v = exp(-100*(x-1).^2); vold = exp(-100*(x-.2*dt-1).^2);

% Time-stepping by leap frog formula:
tmax = 8; tplot = .15; clf, drawnow, set(gcf,'renderer','zbuffer')
plotgap = round(tplot/dt); dt = tplot/plotgap;
nplots = round(tmax/tplot);
data = [v; zeros(nplots,N)]; tdata = t;
for i = 1:nplots
for n = 1:plotgap
t = t+dt;
v_hat = fft(v);
w_hat = 1i*[0:N/2-1 0 -N/2+1:-1] .* v_hat;
w = real(ifft(w_hat));
vnew = vold - 2*dt*c.*w; vold = v; v = vnew;
end
data(i+1,:) = v; tdata = [tdata; t];
end
waterfall(x,tdata,data), view(10,70), colormap(1e-6*[1 1 1]);
axis([0 2*pi 0 tmax 0 5]), ylabel t, zlabel u, grid off

除了这行代码之外,大部分情况都进展顺利

 data = [v; zeros(nplots,N)]

在此处阅读如何在 Numpy 和 Matlab 之间进行转换后 Link我尝试通过执行以下操作来转换它

data = np.array(v,zeros(nplots,N))

但我收到此错误

 data = np.array(v,zeros(nplots,N));
TypeError: data type not understood

我认为这是因为 numpy 数组具有这种结构

  numpy.array(object,dtype=none)

如果您能帮助转换该行,我将不胜感激。预先感谢您!

最佳答案

数据 = [v; Zeros(nplots,N)] 这是连接两个矩阵并将它们堆叠起来,注意 numpy 中的 ; 你可以使用 numpy.concatenate((v, Zeros((nplots ,N))), axis = 0) 其中 axis 是您要通过...连接的轴

data = np.array(v,zeros(nplots,N));
TypeError: data type not understood

基本上,当您调用np.array时,第一个参数必须是可迭代对象、列表、元组,第二个参数必须是类型,即“int”、“float32'、'float32' 等等...但是您将类型设置为 zeros(nplots,N) numpy 提示它不是类型.. 。numpy.zeros 是相同的,第一个参数必须是元组,第二个参数必须是类型,抱歉我没有正确包含 ()

它应该是 data = numpy.concatenate((v, numpy.zeros((nplots,N))), axis = 0) 假设您想使用 double type 这是标准类型。

关于python - 将Matlab代码转换为Python时的"data type not understood",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11198545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com