【问题标题】:Attaching data from matrix to another将数据从矩阵附加到另一个
【发布时间】:2017-12-19 20:44:43
【问题描述】:

我的数据有问题。 给你一些信息: 我有两条数据管道Bx - 红色一条(Canal 1)和By - 蓝色一条(Canal 3),它们都包含 266336 条记录。两次测量均在 300 秒内完成。由于我的情节,我得到了 yaxis,它给了我正确的单位,即 picoTesla,但 xaxis 给了我样本数量而不是时间。看:

plt.plot(Bx, label='Canal 1', color='r', linewidth=0.1, linestyle="-")
plt.plot(By, label='Canal 3', color='b', linewidth=0.1, linestyle="-")

关于我的代码,我设法创建了定义时间的矩阵:

dt = float(300)/266336
Fs = 1/dt
t = [0,300,dt*1e3]

我的数据矩阵如下所示:

a = np.amin(data.data)
Bx = data.data[0,]
By = data.data[1,]

我知道,从这 266336 条记录中,每秒发生 887,78409 条记录。但是如何做到这一点?怎么写给python,让他知道,每一秒都被887,78409个样本占用。

更新! 使用此代码:

N = len(Bx)
time = np.linspace(0, 300, N)
plt.plot(time, Bx, ...)

我明白了:

【问题讨论】:

    标签: python python-2.7 numpy matrix data-conversion


    【解决方案1】:

    看来您定义时间所需的只是:np.linspace(0,300,266336)

    这将[0, 300] 区间划分为266336 相等的“步数”。

    N = len(Bx)
    time = np.linspace(0, 300, N)
    plt.plot(time, Bx, ...)
    

    [mcve]:

    import numpy as np
    import matplotlib.pyplot as plt 
    
    Bx = np.random.rand(266336)
    
    N = len(Bx)
    time = np.linspace(0, 300, N) # or 300000
    
    plt.figure(1).clf()
    plt.plot(time, Bx)
    

    如果这个(单独)不起作用,那么我不知道为什么,因为它对我有用。如果它确实有效,但您的脚本没有,那么您会在脚本中找到您正在做的其他事情,这会破坏您的图形显示......

    【讨论】:

    • 我应该如何将它放入代码中?修改plt.plot?或者定义np.line.... 是时间的新变量
    • 是的,看看我的。
    • 我不是那样工作的,因为当我扩展你的命令 np.linespace(0,300000, N) 时,我看到整个 xaxis,但不是从 1 到 300,只有 1 到 300000。
    • 当然,如果你使用 300000,你会看到 300000...我不明白你的问题。
    • 你能看看我编辑的问题吗?如果您有 266336 条记录,则不能只强制 xaxis 长度为 300 个单位。这意味着我的测量与时间不同步,这就是为什么我给你每秒的样本数(887,78409)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多