make.m

来自「按照人名 电话号吗的格式建立电话本」· M 代码 · 共 52 行

M
52
字号
function make(s)
  parad = 4;
  threshold = 5000;

  inputf1 = [s '.txt'];
  inputf2 = [s '.lab'];
  name = [s '.wav'];
  num = csvread(inputf1);
  fid = fopen(inputf2, 'r');
  str = fgetl(fid);
  count = 0;
  tot = 0;
  while not(str == -1) 
     v = findstr(str, 'end_sample');
     if (length(v) > 0) 
         count = count + 1;
         y = str2num(str(v(1) + 12 : length(str) - 2));
         if (mod(count, 2) == 0) 
             right(tot) = y;
             v = findstr(str, 'ch_char');
             sound(tot) = str2num(str(v(1)+9:v(1)+9));
         else
             tot = tot + 1;
             left(tot) = y;
         end
     end
     str = fgetl(fid);
  end
  
  fclose(fid);
  tot = tot - 1;
  for j = 1 : parad 
      fid = fopen(['list' num2str(j) '.txt'], 'a');
      for k = 1 : tot - j + 1
        mark = 1;
        result = 0;
        if (j > 1)
          for r = 0 : j - 2
            result = result * 10 + sound(k + r);
            if (left(k+r+1) - right(k+r) > threshold) 
                mark = 0;
                break;
            end
          end
        end
        result = result * 10 + sound(k + j - 1);
        if (mark == 1)
            fprintf(fid, '%s %s %s %s \r\n', num2str(result), name, num2str(left(k)), num2str(right(k+j-1)));
        end
      end
      fclose(fid);
  end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?