【问题标题】:only size-1 arrays can be converted to Python scalars python只有 size-1 的数组可以转换为 Python 标量 python
【发布时间】:2020-06-06 10:42:18
【问题描述】:

我最近在研究python,在构建调幅信号的时候,出现这个错误,据我了解,数据类型有问题,但不明白需要具体修复什么。下面我给出函数本身和它的工作代码

def signal_am(amp, km, fc, fs, period):
     t = np.linspace(0, 1, 1000)
     return (amp * (1 + km * np.cos(2*pi*fs*t)+2*sin(2*pi*f*t)) * np.cos(fc * t))

N = 1024
fs = 12            
fc = 155
km = [0.5, 1, 1.7]   
sig = [signal_am(amp=1.0, km=i, fc=fc, fs=fs, period=N) for i in km]

错误:

【问题讨论】:

  • @Snehil 你能告诉我如何修复我的代码以避免这种情况吗?
  • 在return语句中,f是什么?
  • @MrFuppes 它的频率,整数
  • 好的,如果您在函数中使用未作为参数传递的变量,如果它们在函数的外部命名空间中定义,它可能会起作用。但是,我认为更好的做法 将函数所需的所有内容作为参数传递。你的功能例如实际上并没有对period 做任何事情,那为什么要通过它呢?

标签: python numpy


【解决方案1】:

在您的函数中,t 是一维 numpy 数组。并非您使用的所有函数似乎都接受数组输入,有些可能需要标量值(例如sin)。改用numpyufuncs,它应该可以工作:

import numpy as np

def signal_am(amp, km, f, fc, fs, period):
    t = np.linspace(0, 1, 1000)
    return (amp * (1 + km * np.cos(2*np.pi*fs*t)+2*np.sin(2*np.pi*f*t)) * np.cos(fc * t))

N = 1024
fs = 12            
fc = 155
km = [0.5, 1, 1.7]   
sig = [signal_am(amp=1.0, km=i, f=1, fc=fc, fs=fs, period=N) for i in km]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2021-12-24
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    相关资源
    最近更新 更多