【发布时间】:2013-08-23 07:37:26
【问题描述】:
我想计算实际文件和重建文件的误码率。为此,在 mat lab 中从波形文件中获取二进制或十六进制值的方法是什么?
【问题讨论】:
我想计算实际文件和重建文件的误码率。为此,在 mat lab 中从波形文件中获取二进制或十六进制值的方法是什么?
【问题讨论】:
您似乎正在寻找一种以二进制形式(即,不是 ASCII)读取文件的方法。您可以使用fread。例如,考虑以下示例:
fid = fopen('sample.wav', 'r'); %// Open the file
A = fread(fid, 'uint8'); %// Read binary contents
fclose(fid); %// Close the file
这将逐字节(作为无符号 8 位整数)将输入文件“sample.wav”读入数组A。请注意,当您显示A 的内容时,您将看到它的十进制值。例如,字节 0x1A 将被读取为十进制 26(“十六进制”和“二进制”只是表示相同值的替代方式)。
填充A 后,您可以通过将其与另一个值数组(可能从另一个 .WAV 文件读取)进行比较来操作它,等...
【讨论】:
您可以使用函数dec2hex 获得数字的十六进制字符串 表示。对于二进制表示,有dec2bin。
通常,您可以找到数字base 格式的数字d 的表示形式,如下所示:
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]'
它也适用于列向量。
【讨论】: