首页 > 解决方案 > 只有 size-1 的数组可以转换为 Python 标量 python

问题描述

我最近研究了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]

错误: 在此处输入图像描述

标签: pythonnumpy

解决方案


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

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]

推荐阅读