我想计算实际和重建文件的误码率。为此,在mat实验室中从波形文件中获取二进制或十六进制值的方法是什么?
答案 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]'
它也适用于列向量。