越封
2021-12-26 22:26
采纳率: 100%
浏览 68

MATLAB 未定义变量 "tdata" 或类 "tdata"

问题遇到的现象和发生背景

自己创建了一个mat文件,用这个代码就不行

问题相关代码,请勿粘贴截图
clear all;
Spk_num=6; %说话人个数
Tra_num=5;  %每个说话人用于训练的语音数目,可修改

ncentres=16; %混合成分数目,可修改,需要同时修改识别程序
fs=16000; %采样频率

% -- 训练 ---
load y.mat; 
for spk_cyc=1:Spk_num    % 遍历说话人
  fprintf('训练第%i个说话人\n',spk_cyc);
  tag1=1;tag2=1; %用于汇总存储mfcc
  for sph_cyc=1:Tra_num  % 遍历语音
     speech = tdata{spk_cyc}{sph_cyc}; 
      %---预处理,特征提取--
     pre_sph=filter([1 -0.97],1,speech); % 预加重
     win_type='M'; %汉明窗
     cof_num=20; %倒谱系数个数
     frm_len=fs*0.02; %帧长:20ms
     fil_num=20; %滤波器组个数
     frm_off=fs*0.01; %帧移:10ms
     c=melcepst(pre_sph,fs,win_type,cof_num,fil_num,frm_len,frm_off); % mfcc特征提取
     cc=c(:,1:end-1)';
     tag2=tag1+size(cc,2);
     cof(:,tag1:tag2-1)=cc;
     tag1=tag2;
  end
   
  %--- 训练GMM模型---
  kiter=5; %Kmeans的最大迭代次数
  emiter=30;         %EM算法的最大迭代次数,可修改
  mix=gmm_init(ncentres,cof',kiter,'full'); % GMM的初始化
  [mix,post,errlog]=gmm_em(mix,cof',emiter); % GMM的参数估计
  speaker{spk_cyc}.pai=mix.priors;
  speaker{spk_cyc}.mu=mix.centres;
  speaker{spk_cyc}.sigma=mix.covars;
   
  clear cof mix;
end
fprintf('训练完成!\n',spk_cyc);
save speaker.mat speaker;


运行结果及报错内容

img

我的解答思路和尝试过的方法

附上y.mat文件的内容

img

以及可以正常运行的.mat文件的内容

img

我想要达到的结果
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题