首页 > 解决方案 > 如何使用 matplotlib 绘制变化数组的方差?

问题描述

我正在尝试绘制差异数组与常数的方差。通过方程式,这就是我要绘制的

diff[n] = arrInput[n] - k*arrInput[n-1]

我需要绘制 diff[n] 与 k 的方差。我是 matplotlib 和一般信号处理的新手,所以我非常坚持这一点。

我所做的是像这样创建和排列:

diff = []
for i in range(1, len(arrInput)): 
    diff.append(arrInput[i] - arrInput[i-1])

但我无法理解如何将该i-1术语与一个变化的常数相乘并绘制它。

我确实尝试使用np.linspace(0,1)为 k 创建等距术语,如下所示:

k = np.linspace(0,1)

但是当我尝试像这样在上面绘制时:plt.plot(np.var(dd),k)我收到以下错误

x 和 y 必须具有相同的第一维,但“具有形状 {} 和 {}”.format(x.shape, y.shape

我将不胜感激任何帮助。

编辑 澄清并简而言之:我想绘制 ( diff[n]) 与k方程的方差图diff[n] = arrInput[n] - k*arrInput[n-1]

标签: pythonnumpymatplotlibsignal-processing

解决方案


您需要先告诉 pyplot 您的 x 轴是什么样子,然后再添加 y 坐标。

import matplotlib.pyplot as plt

k_is_constant = True

def calculate_k(i):
    if k_is_constant:
        return 0.1  # this can be any number you like. Maybe check out argparse
    else:
        #provide a function to calculate k from i. here i will alternate between 0 and 1
        return i%2

arrIn = list(range(50))

y = list()

for i in range(1, len(arrIn)):
    y.append(arrIn[i] - calculate_k(i)*arrIn[i-1])

x = list(range(len(y)))

plt.plot(x, y)
plt.show()

如果您希望 k 为您的程序的不同执行而改变,也许argparse是您所需要的。


推荐阅读