ValueError:x和y必须具有相同的第一维度,但具有形状(512、)和(256、)

2024-09-29 23:30:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用numpy和np.array,但失败了。它显示错误:ValueError:x和y必须具有相同的第一个维度,但具有形状(512,)和(256,)。 我不知道如何编辑那个代码。请帮忙

import math as mt
import matplotlib.pylab as plt

N = 512
t_min = 0   # [s]
t_max = 2   # [s]
frq = 2     # [Hz]
T_p = (t_max-t_min)/N
lst = range(0, N, 1)

t = []
sinus = []
rect = []
pila1 = []
pila2 = []

for i in lst:
    t.extend([t_min + lst[i] * T_p])
    sinus.extend([mt.sin(2 * mt.pi * frq * t[i])])
    if sinus[i] > 0:
        rect.extend([True])
    else:
        rect.extend([False])
        pila1.extend([(t[i] % (1 / frq)) * frq])
        pila2.extend([abs((t[i] % (1 / frq)) * frq - 0.5) * 2])


plt.figure(1)
plt.title('Plot')
plt.plot(t, sinus)
plt.plot(t, rect)
plt.plot(t, pila1)
plt.plot(t, pila2)
plt.xlabel('t')
plt.grid(True)


plt.show()

存在完全错误:

    Traceback (most recent call last):
  File "venv/zadanieA.py", line 32, in <module>
    plt.plot(t, pila1)
  File "venv\lib\site-packages\matplotlib\pyplot.py", line 2761, in plot
    return gca().plot(
  File "venv\lib\site-packages\matplotlib\axes\_axes.py", line 1646, in plot
    lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "venv\lib\site-packages\matplotlib\axes\_base.py", line 216, in __call__
    yield from self._plot_args(this, kwargs)
  File "venv\lib\site-packages\matplotlib\axes\_base.py", line 342, in _plot_args
    raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (512,) and (256,)

Tags: inpyrectvenvplotmatplotliblibline
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:03

好的,t列表包含的值与原始lst的值一样多,因为在循环的每个迭代中添加一个项,即512个项。但是,您的pila1pila2列表仅扩展为sinus[i]的正值,即数量的一半-因此它们仅包含256个项目。要解决这个问题,还可以将项目添加到这些列表中(哦,请不要在append足够的地方使用extend

for i in lst:
    t.append(t_min + lst[i] * T_p)
    sinus.append(mt.sin(2 * mt.pi * frq * t[i]))
    if sinus[i] > 0:
        rect.append(True)
        pila1.append(0) # or whatever value you deem "neutral"
        pila2.append(0)
    else:
        rect.append(False)
        pila1.append((t[i] % (1 / frq)) * frq)
        pila2.append(abs((t[i] % (1 / frq)) * frq - 0.5) * 2)

相关问题 更多 >

    热门问题