You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python(Spyder)绘制ASK信号遇数组形状不匹配报错求解

嘿,我看到你在绘制ASK信号时遇到了维度不匹配的错误,这在信号处理里是很常见的小问题——核心原因就是载波信号our_signal和方波信号pliroforia的长度完全不一致,numpy没法对形状差异这么大的数组做广播相乘。让我帮你拆解问题并修复代码:


错误根源分析

你代码里的时间轴和信号生成顺序出了问题:

  1. 你先基于total_samples=250生成了初始时间轴t,并用它生成了长度为250的载波信号our_signal
  2. 之后你重新定义了t,这次是基于方波信号pliroforia的长度(1440000),但our_signal还是原来的250个采样点,两者形状不匹配,自然无法完成相乘操作。
  3. 另外还有一个隐藏问题:你计算Samples_per_bit=int(12/Ts)的逻辑不合理——Ts=0.0001秒,12/Ts会得到120000个采样点/比特,总时间会达到144秒,远超过你设定的Tmax=0.025秒,这完全不符合ASK调制的常规逻辑。

修复后的完整代码

我调整了代码顺序,统一了时间轴,同时修正了比特持续时间的计算逻辑,让信号参数更符合实际调制场景:

import numpy as np
from numpy import pi, linspace, sin, array
import matplotlib.pyplot as plt
from scipy import signal

# 载波参数
A = 1          # 载波幅度
f = 1000       # 载波频率(Hz)
T = 1/f        # 载波周期(秒)
Ts = T/10      # 采样间隔(每个载波周期取10个采样点)
N = 2          # 每个比特包含的载波周期数(可根据需求调整)
T_bit = N * T  # 单个比特的持续时间

# 信息序列
word = array([1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1])
bit_count = len(word)
Samples_per_bit = int(T_bit / Ts)  # 每个比特对应的采样点数

# 生成方波信号(信息信号)
pliroforia = []
for bit in word:
    bit_samples = np.ones(Samples_per_bit) * bit
    pliroforia = np.concatenate((pliroforia, bit_samples))

# 生成统一的时间轴(匹配方波信号长度)
total_samples = len(pliroforia)
t = linspace(0, bit_count * T_bit, total_samples, endpoint=True)

# 用统一时间轴生成载波信号
our_signal = A * sin(2 * pi * f * t)

# 绘制载波信号
plt.figure(1)
plt.plot(t, our_signal)
plt.xlabel('Χρόνος (sec) ->')
plt.ylabel('Πλάτος (V)')
plt.title('Πορτοφόρος σήμα')

# 绘制方波信号
plt.figure(2)
plt.plot(t, pliroforia)
plt.xlabel('Χρόνος (sec) ->')
plt.ylabel('Πλάτος (V)')
plt.title('Σήμα πληροφορίας (καθυστέρηση)')

# 生成并绘制ASK信号(现在两个信号长度一致,可以直接相乘)
ASK_signal = pliroforia * our_signal
plt.figure(3)
plt.plot(t, ASK_signal)
plt.xlabel('Χρόνος (sec) ->')
plt.ylabel('Πλάτος (V)')
plt.title('ASK σήμα')

plt.show()

关键修改说明

  1. 统一时间轴:先生成方波信号确定总采样数,再基于这个长度生成时间轴t,确保载波和方波信号的采样点数量完全匹配。
  2. 修正比特持续时间:用N(每个比特包含的载波周期数)来定义比特长度,既符合ASK调制的常规逻辑,也让总时间和载波参数匹配。你可以根据需求调整N的值,比如改成5,每个比特就包含5个载波周期。
  3. 简化冗余代码:去掉了未用到的fft_modules导入,让代码更简洁清晰。

内容的提问来源于stack exchange,提问作者george

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:05:37