代码运行后,提示错误使用 bitget 双精度输入必须包含 ASSUMEDTYPE 范围内的整数值。
时间: 2024-02-25 14:58:32 浏览: 174
计算机精度问题(Double)
这个错误提示表明 bitget 函数的输入必须是整数类型。因此,您需要将输入参数转换为整数类型,以避免该错误。
在您的代码中,可以使用以下语句将输入参数 w 转换为整数类型:
```
w = int16(w * (2^15));
```
这将将浮点数转换为带符号的16位整数类型,以便将其传递给 bitget 函数。
然后,您可以使用以下代码来替换 for 循环,以便同时嵌入水印音频的所有采样的最低有效位:
```
% 将水印音频的每个采样的最低有效位嵌入到A的相应采样的最低有效位中
b = bitset(a, 1, bitget(w, 1));
```
这将同时嵌入水印音频的所有采样的最低有效位,而无需循环嵌入。
最后,记得在代码结束后将 e 转换回双精度浮点数类型,以便将其写入 WAV 文件:
```
e = double(e);
audiowrite('E.wav', e, fs1/N);
```
阅读全文