【问题标题】:how to get hex or binary values from a wavefile in matlab?如何从 matlab 中的波形文件中获取十六进制或二进制值?
【发布时间】:2013-08-23 07:37:26
【问题描述】:

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

【问题讨论】:

    标签: matlab binary hex


    【解决方案1】:

    您似乎正在寻找一种以二进制形式(即,不是 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 文件读取)进行比较来操作它,...

    【讨论】:

      【解决方案2】:

      您可以使用函数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]'
      

      它也适用于列向量。

      【讨论】:

        猜你喜欢
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-04
        • 2022-06-22
        • 2021-01-03
        • 2022-01-17
        • 2011-07-12
        相关资源
        最近更新 更多