| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3265 人关注过本帖
标题:求助:代码生成要求在对变量 'm' 标注下标前对该变量进行完全定义。如何解决 ...
只看楼主 加入收藏
偏爱与例外
Rank: 1
来 自:广东惠州
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-1-13
收藏
 问题点数:0 回复次数:0 
求助:代码生成要求在对变量 'm' 标注下标前对该变量进行完全定义。如何解决
程序代码:
function m= goertzel_decode(y)
%goertzel_decodejia
%   此处显示详细说明
% 端点检测
tm=['1','2','3','A';'4','5','6','B';'7','8','9','C';'*','0','#','D'];   % DTMF信号代表的16个数
TNr=0;
N=205;
K=[18,20,22,24,31,34,38,42]; 
p=1;
q=1;
% 读取语音
% [y,Fs]=audioread(w);
% 预加重
u=0.95;
b=[1, -u];
a=1;
y=filter(b,a,y);

% 分帧
s=enframe(y,160,80);

% 短时平均幅值
avga=sum(abs(s),2);

% 短时过零率
s1 = s;
avgz=s1.*[zeros(size(s1,1),1),s1(:,1:end-1)];
avgz(avgz>=0)=0;
avgz(avgz<0)=1;
avgz=sum(avgz,2);

% 端点检测
MH=20;
ML=19;
ZS=40;
if length(avga)~=length(avgz)
    disp('errors')
end
a1=1;
a2=1;
b1=1;
b2=1;
c1=1;
c2=1;
while a1<length(avga)
    if avga(a1) >= MH % 浊音开始
        for a2=a1+1:length(avga)
            if avga(a2) < MH % 浊音结束
                for b1=a1-1:-1:c2+1
                    if avga(b1) <= ML
                        break % 精确浊音开始
                    end
                end
                for b2=a2+1:length(avga)
                    if avga(b2) <= ML
                        break % 精确浊音结束
                    end
                end
                for c1=b1-1:-1:c2+1
                    if avgz(c1) <= 3*ZS
                        break % 精确清辅音开始
                    end
                end
                for c2=b2+1:length(avgz)
                    if avgz(c2) <= 3*ZS
                        break % 精确清辅音结束
                    end
                end
                break
            end
        end
        % 输出一个语音段
      %  sprintf('%d,%d,%d,%d,%d,%d',c1,b1,a1,a2,b2,c2)
          s_start=1;
        s_end=(c2-1)*80;
        if s_end>900
            s_start=(c1-1)*80;
        end
    q=q+1;
        g=y(s_start+100:s_end+100);
         X=goertzel(g(1:N),K);            % 用Goertzel算法计算八点DFT样本     
           val = abs(X); % 列出八点DFT向量
               limit = 13;                 %    
 for s=5:8
     if val(s) > limit, break, end       % 查找列号    
 end     
for r=1:4         
 if val(r) > limit, break, end       % 查找行号   
end  
TNr=tm(r,s-4);
        a1=c2;
        p=p+1;
        m(p-1,1)=TNr;%  把新的数据追加到数组中。 
    end
   a1=a1+1;
end
p=1;
end



代码生成要求在对变量 'm' 标注下标前对该变量进行完全定义。
搜索更多相关主题的帖子: for if end 变量 break 
2022-11-15 17:48
快速回复:求助:代码生成要求在对变量 'm' 标注下标前对该变量进行完全定义。如 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015269 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved