用Python绘制信号

时间:2014-12-14 13:28:02

标签: python graph plot signals wave

我正在尝试在python中绘制一个简单的信号,当我运行它时,它不显示任何错误只有'重新启动'和一个空格

from pymatlab import*

import numpy as np

from numpy import sqrt

import matplotlib.pyplot as plt

import scipy as sp

import math

(hashtags) n, coef, freq, phase

def sinyal(N,c,f,p):

 y=np.zeros(N)

 t=np.linspace(0,2*pi,N)

 Nf=len(c)

 for i in range(Nf):

     y+=c[i]*np.sin(f[i]*t)

     return y;

 # Signal Generator

 c=[2,5,10]

 f=[50, 150, 300]

 p=[0,0]

 N=2000

 x=np.linspace(0,2.0*math.pi,N)

 y=sinyal(N,c,f,p)

 plt.plot(x[:100],y[:100])

 plt.show()    

2 个答案:

答案 0 :(得分:1)

您发布的代码存在逻辑缩进错误。对sinyal的调用缩进了一级,将置于内部sinyal本身的定义。因此虽然定义了sinyal,但它永远不会被调用。

使用4个空格进行缩进可以帮助您将来避免此错误。

答案 1 :(得分:0)

您的代码基本上有效(除了一些格式错误和其他奇怪之处)。我没有pymatlab,但这并不是必需的。

import numpy as np
from numpy import sqrt
import matplotlib.pyplot as plt
import scipy as sp
import math

def sinyal(N,c,f,p):
    y=np.zeros(N)
    t=np.linspace(0,2*np.pi,N)
    Nf=len(c)
    for i in range(Nf):
        y+=c[i]*np.sin(f[i]*t)
    return y;

 # Signal Generator
c=[2,5,10]
f=[50, 150, 300]
p=[0,0]
N=2000
x=np.linspace(0,2.0*math.pi,N)
y=sinyal(N,c,f,p)
plt.plot(x[:100],y[:100])
plt.show()