如何秘密int32或int16 uint8吗?

99(30天)
哈桑伊克巴尔
哈桑伊克巴尔 2016年10月17日
回答: 史蒂文的主 2016年10月17日
我想读一个wav文件,其中包含16位样品和隐蔽的8位样本和回信。一旦我有16位样本读入一个数组,如何将它们转换为8位样品吗?16位签署而8位无符号。是的,数据将会丢失。这种coversion什么内部功能?
出于某种原因,当我读到wav文件,样本数据存储为一个double类型的矩阵。为什么?

答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2016年10月17日
默认情况下,wavread()自动将样品从他们的内部格式转换为1 < = x < 1范围扩展和变化。你可以转换uint8的两倍
(样本,Fs) = wavread (“YourFile.wav”);
samples8 = uint8((样品+ 1)/ 2 * 255);
然后当你回信时,他们将被保存在uint8内部数据类型。
阅读样本在原始格式,添加“本地”选项:
(样本,Fs) = wavread (“YourFile.wav”,“本地”);
如果他们确实是int16格式:
samples8 = uint8((双(样本)/ 32768 + 1)/ 2 * 255);
可以写成
samples8 = uint8((双(样本)/ 65536 + 1/2)* 255);

史蒂文的主
史蒂文的主 2016年10月17日
如果你想转换 int16 int32 数组为 uint8 ,可以使用 uint8 函数。原始数组中的值太小或太大被存储 uint8 将饱和 intmin (“uint8”) intmax (“uint8”) 分别。
x = int16 (20 200 3000 [5])
饱和= [intmin (“uint8”)intmax (“uint8”)]
y = uint8 (x)
如果你想转换 二进制模式 从原始数组,使用 定型 函数。你可能还需要或想要使用 swapbytes 函数。]
z =定型(x,“uint8”)

标签

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!