Undefined function 'envelope' for input arguments of type 'double'. Error in shiyanASK (line 8) demod_signal = envelope(mod_signal).*cos(2*pi*fc*t); % 2ASK解调
时间: 2024-02-25 16:57:17 浏览: 212
这个错误提示说明MATLAB无法识别envelope()函数,有可能是因为你使用的是较低版本的MATLAB,而该函数是在较高版本中新增的。如果你使用的是较低版本的MATLAB,可以尝试使用其他方法来提取信号包络,例如使用hilbert()函数或者自己编写包络检测算法等。
使用hilbert()函数的代码示例如下:
```
analytic_signal = hilbert(mod_signal); % 解析信号
envelope_signal = abs(analytic_signal); % 提取包络
demod_signal = envelope_signal .* cos(2*pi*fc*t); % 2ASK解调
```
上述代码中,hilbert()函数用于计算信号的解析信号,然后通过计算解析信号的模值来得到信号的包络。最后,将包络信号乘以载波信号进行解调。
如果你需要编写自己的包络检测算法,可以参考信号处理中常用的一些包络检测方法,例如低通滤波法、平均法、差分法等。
相关问题
note_with_envelope = harmonics_signal .* envelope(:);数组大小不兼容
非常抱歉,我之前给出的代码存在错误。在计算`note_with_envelope`时,数组大小确实不兼容。我不应该使用`envelope(:)`来进行包络信号的转置。请使用以下代码修正此问题:
```matlab
note_with_envelope = harmonics_signal .* repmat(envelope', size(harmonics_signal, 1), 1);
```
这样,我们使用`repmat`函数将包络信号复制为与`harmonics_signal`相同大小的矩阵,并将其与谐波信号相乘,以获得带有包络的音符信号。
非常抱歉给你带来了困扰。请使用修正后的代码再次尝试生成带有谐波和包络的音符信号,并将它们组合在一起生成一段简单的音乐。如果还有其他问题,请随时提问。
// Envelope parameters // G4double env_sizeXY = 20*cm, env_sizeZ = 30*cm; G4Material* env_mat = nist->FindOrBuildMaterial("G4_WATER");
这段代码定义了一些参数和变量。其中,`env_sizeXY` 和 `env_sizeZ` 分别是 `G4double` 类型的变量,表示一个长方体几何体的横向和纵向大小,单位为厘米。
`env_mat` 是一个指向 `G4Material` 类型的指针,表示该几何体的材料,该材料是通过调用前面提到的 `G4NistManager` 对象的 `FindOrBuildMaterial` 方法获取的。在这里,材料被指定为 "G4_WATER",即水。
阅读全文