如何从matlab中的wav文件中获取十六进制或二进制值?

时间:2013-08-21 04:25:03

标签: matlab binary hex

我想计算实际和重建文件的误码率。为此,在mat实验室中从波形文件中获取二进制或十六进制值的方法是什么?

2 个答案:

答案 0 :(得分:1)

看来你正在寻找一种以二进制形式(即不是ASCII)读取文件的方法。您可以使用fread。例如,请考虑以下示例:

fid = fopen('sample.wav', 'r');  %// Open the file
A = fread(fid, 'uint8');         %// Read binary contents
fclose(fid);                     %// Close the file

这将把输入文件“sample.wav”逐字节地读取(作为无符号8位整数)到数组A中。请注意,当您显示A的内容时,您将看到其十进制值。例如,字节0x1A将被读作十进制26(“十六进制”和“二进制”只是表示相同值的替代方式)。

填充A后,您可以通过将其与另一个值数组(可能从另一个.WAV文件中读取), ...

进行比较来对其进行操作。

答案 1 :(得分:0)

您可以使用函数dec2hex获取数字的十六进制字符串表示。对于二进制表示,有dec2bin

通常,您可以按以下方式找到数字d格式的数字base的表示形式:

d = 97; % example
base = 2; % can be 10, 16, whatever...

rep=rem(floor(d*base.^(1-ceil(log(d)/log(base)):0)),base)

% check:
rep*base.^[length(rep)-1:-1:0]'

它也适用于列向量。