程序运行不了 总是出错 求助!!!!!

%主程序

clc;clear;

coe=[1,0,1,0,0,0,0,0,0,0,0];

coe1=[0,0,0];

coe2=[0,0,0,0,0,0,0,0,0,0];

coe3=[0];

Dqk=zeros(1,7);%自适应你量化器输出

fid=fopen('speech1.txt');

a=fscanf(fid,'%e\n');

fclose(fid);

fid=fopen('spp.txt','wt');%存放解码输出波形

for i=1:size(a,1);

Slk=a(i);

[coe,coe1,coe2,coe3,Dqk]=adpcm(Slk,coe,coe1,coe2,coe3,Dqk);

fprintf(fid,'%f\n',coe2(5));

end

fclose(fid);

fid=fopen('spp.txt','rt');

b=fscanf(fid,'%e\n');

subplot(211);

plot(a);

subplot(212);

plot(b);

% 语音编解码子函数程序adpcm.m

function [coe,coe1,coe2,coe3,Dqk]=adpcm(Slk,coe,coe1,coe2,coe3,Dqk)  %语音编解码函数

Yk_pre = coe2(1);    %初值传递

Sek_pre = coe2(2);

Ik_pre = coe2(3);

Ylk_pre_pre = coe2(4);

Srk_pre = coe2(5);

Srk_pre_pre = coe2(6);

a2=coe2(7);

Tdk_pre =coe2(8);

Trk_pre =coe2(9);

Num=coe2(10);

coe2(10)=coe2(10)+1;

[Sek,coe] = Sek_com(Srk_pre,Srk_pre_pre,Dqk,coe);  %自适应预测

Dk = Dk_com( Slk, Sek );   %采样值与其估值差值计算

Yuk_pre = yu_result( Yk_pre, wi_result(abs(Ik_pre)) );   %快速非锁定标度因子计算

if   Yuk_pre<1.06

Yuk_pre=1.06;

else

if  Yuk_pre>10.00

Yuk_pre=10.00;

end

end

Ylk_pre = yl_result( Ylk_pre_pre, Yuk_pre );    %锁定标度因子计算

Trk_pre = Trk_com( a2, Dqk(6), Ylk_pre );  %窄带信号瞬变判定

Tdk_pre = Tdk_com( a2 );    %单频信号判定

[Alk,coe1]= Alk_com( Ik_pre, Yk_pre ,coe1,Tdk_pre,Trk_pre);

%自适应速度控制与自适应预测

if  Alk<0.0

Alk=0.0;

else

if  Alk>1.0

Alk=1.0;

end

end

[Yk,coe3]=Yk_com(Ik_pre,Alk,Yk_pre,coe3);     %量化阶距自适应因子计算

Ik = Ik_com( Dk, Yk );     %自适应量化并编码输出

Yk_pre = Yk;

Srk_pre_pre = Srk_pre;

Sek_pre = Sek;

Ylk_pre_pre = Ylk_pre;

Ik_pre = Ik;

coe2(1)= Yk;

coe2(6)= Srk_pre;

coe2(2)= Sek;

coe2(4)= Ylk_pre;

coe2(3)= Ik;

Dqk(1) = Dqk(2);

Dqk(2) = Dqk(3);

Dqk(3) = Dqk(4);

Dqk(4) = Dqk(5);

Dqk(5) = Dqk(6);

Dqk(6) = Dqk(7);

Dqk(7) = Dqk_com( Ik_pre,Yk_pre);     %自适应逆量化器输出

Srk_pre = Srk_com( Dqk(7), Sek_pre);    %重建信号输出

coe2(5)=Srk_pre;

%自适应速度控制与自适应预测子函数

function [h,coe1]=Alk_com(Ik_pre,Yk_pre,coe1,Tdk_pre,Trk_pre)

Dmsk_p2=coe1(1);

Dmlk_p2=coe1(2);

Apk_pre2=coe1(3);

Dmsk_p1=(1-2^(-5))*Dmsk_p2+2^(-5)*fi_result(abs(Ik_pre));

Dmlk_p1=(1-2^(-7))*Dmlk_p2+2^(-7)*fi_result(abs(Ik_pre));

coe1(1)=Dmsk_p1;

coe1(2)=Dmlk_p1;

if ((abs(Dmsk_p1-Dmlk_p1)>=2^(-3)*Dmlk_p1)|(Yk_pre<3)|(Tdk_pre==1))

Apk_pre1=(1-2^(-4))*Apk_pre2+2^(-3);

else

if (Trk_pre==1)

Apk_pre1=1;

else

Apk_pre1=(1-2^(-4))*Apk_pre2;

end

coe1(3)=Apk_pre1;

end

if Apk_pre1>=1

Alk=1;

else

Alk=Apk_pre1;

end

h=Alk;

%采样值与其估计值差值计算奇函数

function d=Dk_com(Slk,Sek);

Dk=Slk-Sek;

d=Dk;

%自适应逆量化器输出子函数

function f=Dqk_com(Ik,Yk)

if Ik>=0

Dqsk=0;

i=Ik;

else

Dqsk=1;

i=-Ik;

end

switch i

case 7

Dqlnk=3.32;

case 6

Dqlnk=2.91;

case 5

Dqlnk=2.52;

case 4

Dqlnk=2.13;

case 3

Dqlnk=1.66;

case 2

Dqlnk=1.05;

case 1

Dqlnk=0.031;

case 0

Dqlnk=-1000;

end

%归一化输出

Dqlk=Dqlnk+Yk;

Dqk=2^Dqlk;

if Dqsk==1

Dqk=-Dqk;

end

f=Dqk;

%自适应预测中f函数值计算子函数

function b=f_com(a)

if abs(a)<=0.5

b=4*a;

else

b=2*sgn_com(a);

end

%速度控制中F[I(k)]计算子函数

function w=fi_result(in)

switch in

case 0

fi=0;

case 1

fi=0;

case 2

fi=0;

case 3

fi=1;

case 4

fi=1;

case 5

fi=1;

case 6

fi=3;

case 7

fi=7;

end

w=fi;

%自适应量化并编码输出子函数

function f=Ik_com(Dk,Yk)

if Dk>0

Dsk=0;

else

Dsk=1;

end

if Dk==0

Dk=Dk+0.0001;

end

Dlk=log(abs(Dk))/log(2);

Dlnk=Dlk-Yk;

x=Dlnk;

a=10;

if Dlnk

Ik=0;

end

if -0.98<=Dlnk&Dlnk<0.62

Ik=1;

end

if 0.62<=Dlnk&Dlnk<1.38

Ik=2;

end

if 1.38<=Dlnk&Dlnk<1.91

Ik=3;

end

if 1.91<=Dlnk&Dlnk<2.34

Ik=4;

end

if 2.34<=Dlnk&Dlnk<2.72

Ik=5;

end

if 2.72<=Dlnk&Dlnk<3.12

Ik=6;

end

if Dlnk>=3.12

Ik=7;

end

if Dsk==1

Ik=-Ik;

end

f=Ik;

%自适应预测子函数

function [g,f]=Sek_com(Srk_pre,Srk_pre_pre,Dqk,coe)

a1_pre=coe(1);

a2_pre=coe(2);

b1_pre=coe(3);

b2_pre=coe(4);

b3_pre=coe(5);

b4_pre=coe(6);

b5_pre=coe(7);

b6_pre=coe(8);

Sezk_pre=coe(9);

p_pre2=coe(10);

p_pre3=coe(11);

%六阶零点预测器系数

b1=(1-2^(-8))*b1_pre+2^(-7)*sgn_com(Dqk(7))*sgn_com(Dqk(6));

b2=(1-2^(-8))*b2_pre+2^(-7)*sgn_com(Dqk(7))*sgn_com(Dqk(5));

b3=(1-2^(-8))*b3_pre+2^(-7)*sgn_com(Dqk(7))*sgn_com(Dqk(4));

b4=(1-2^(-8))*b4_pre+2^(-7)*sgn_com(Dqk(7))*sgn_com(Dqk(3));

b5=(1-2^(-8))*b5_pre+2^(-7)*sgn_com(Dqk(7))*sgn_com(Dqk(2));

b6=(1-2^(-8))*b6_pre+2^(-7)*sgn_com(Dqk(7))*sgn_com(Dqk(1));

%二阶极点预测器系数

Sezk=b1*Dqk(7)+b2*Dqk(6)+b3*Dqk(5)+b4*Dqk(4)+b5*Dqk(3)+b6*Dqk(2);

p_pre1=Dqk(7)+Sezk_pre;

if abs(p_pre1)<=0.000001;

a1=(1-2^(-8))*a1_pre;

a2=(1-2^(-7))*a2_pre;

else

a1=(1-2^(-8))*a1_pre+(3*2^(-8))*sgn_com(p_pre1)*sgn_com(p_pre2);

a2=(1-2^(-7))*a2_pre+2^(-7)*(sgn_com(p_pre1)*sgn_com(p_pre3)-f_com(a1_pre)*sgn_com(p_pre1)*sgn_com(p_pre2));

end

%自适应预测和重建信号计算器

coe(1)=a1;

coe(2)=a2;

coe(3)=b1;

coe(4)=b2;

coe(5)=b3;

coe(6)=b4;

coe(7)=b5;

coe(8)=b6;

coe(9)=Sezk;

coe(10)=p_pre1;

coe(11)=p_pre2;

g=(a1*Srk_pre+a2*Srk_pre_pre+Sezk);

f=coe;

%sgn_com函数

function b=sgn_com(a)

if a>=0.000001

b=1;

else

b=-1;

end

%重建信号输出子函数

function Srk=Srk_com(Dqk,Sek)

Srk=Dqk+Sek;

%单频信号判定子函数

function Tdk=Tdk_com(A2k)

if (A2k

Tdk=1;

else

Tdk=0;

end

Tdk=Tdk;

%窄带信号顺便判定子函数

function Trk=Trk_com(A2k,Dqk,Ylk)

if (A2kpow(24.2,Ylk))

Trk=1;

else

Trk=0;

end

Trk=Trk;

%量化器标度因子自适应wi的选取子函数

function J=wi_result(in)

switch in

case 0

wi=-0.75;

case 1

wi=1.13;

case 2

wi=2.56;

case 3

wi=4.00;

case 4

wi=7.00;

case 5

wi=12.38;

case 6

wi=22.19;

case 7

wi=70.13;

end

J=wi;

%量化阶矩自适应因子计算子函数

function [Yk,coe3]=Yk_com(Ik_pre,Alk,Yk_pre,coe3);

Yl_pre_pre=coe3;

Yu_pre=(1-2^(-5))*Yk_pre+2^(-5)*wi_result(abs(Ik_pre));

Yl_pre=yl_result(Yl_pre_pre,Yu_pre);

coe3=Yl_pre;

Yk=Alk*Yu_pre+(1-Alk)*Yl_pre;

%锁定标度因子计算子函数

function yl=yl_result(yl_pre,yu_now)

yl=(1-2^(-6))*yl_pre+2^(-6)*yu_now;

yl=yl;

%快速非锁定标度因子计算子函数

function yu=yu_result(y_now,wi_now)

yu=(1-2^(-5))*y_now+2^(-5)*wi_now;

yu=yu;

错误提示

??? Error using ==> plot

Vectors must be the same lengths.

Error in ==> d at 23

plot(a);

matlab adpcm编码,求助 求G.721 ADPCM语音编码相关推荐

  1. 已知函数和y值求自变量用matlab,matlab已知函数值求自变量,求助

    思路是这样的:你得到最小的函数值后,把它带入你作图的方程反解自变量的值.我不知道你画的这个函数图像的方程什么,我用一个二次方程y=x.^2+x给你做示范:先做图:x=-10:0.1:10;y=x.^2 ...

  2. 关于ADPCM编码和PCM编码的wave文件通过Java进行相互转换

    关于ADPCM编码和PCM编码的.wav文件通过Java进行相互转换 最近在做一个呼叫器的项目,中间碰到了点问题,就是呼叫器那边传过来的数据是ADPCM编码格式的,经过程序转换成.wav文件后可以在播 ...

  3. ADPCM编码和解码

    ADPCM音频解码,其实放在这里有些不太合适. 在编写ZN-X开发板整板测试程序的后期,振南开始转向专注于ADPCM音频的解码算法.对于音视频的编解码,振南一直是很感兴趣的. VS1003录音向外输出 ...

  4. ADPCM编码与解码学习笔记·

    ADPCM编码与解码学习笔记 一.前言 之前许多次说过,有空的时候写写博客,可是一直没有好好落实.由于工作的原因,经常会接触到一些音视频的编解码技术,而ADPCM就是我第一接触的音频编码技术.所以,本 ...

  5. MATLAB教程_11方程式求根_台大郭彦甫课程笔记

    MATLAB教程_11方程式求根_台大郭彦甫课程笔记 一.符号寻根法(解析法) 1.使用sym()或syms()创建符号变量 2.符号根查找:solve() 3.解多重方程 4.求解用符号表示的方程 ...

  6. matlab绘制系统函数频率特性,7.6应用于离散系统的Matlab基本函数 7.7 求离散系统的时域响应 频率特性分析...

    功能:求离散系统的单位阶跃响应. 格式: [c,t]=dstep(n,d) [c,t]=dstep(n,d,m) 说明: dstep函数可绘制出离散系统以多项式函数g(z)=n(z)/d(z)表示的系 ...

  7. java 奥运五环_[求助]求奥运五环 java代码

    [求助]求奥运五环 java代码 求奥运五环 java小程序代码,急用!新手先谢过了! 搜索更多相关的解决方案: 奥运五环  java  代码 ----------------解决方案-------- ...

  8. Matlab计算微分方程曲线求导及过曲线上点的切线方程

    Matlab计算微分方程曲线求导及过曲线上点的切线方程 求解f(x)=x^2一元二次方程上某点的切线方程并绘制出方程的切线图.点(4,f(4))是曲线方程f(x)上的一个点,求出该点的切线并绘制出来. ...

  9. matlab求解复杂隐函数,MATLAB复杂隐函数求解!求大神指导!

    问题描述: MATLAB复杂隐函数求解!求大神指导! syms D1 D2 G1 G2 al E1 E2 Km w6 G1=10^(-5);G2=10^(-5); E1=2*(10^11);E2=2* ...

最新文章

  1. MySQL存储过程的创建及调用
  2. Andorid之BINDSERVICE的使用方法总结
  3. Feign接口 多线程问题
  4. Qt 编码问题QTextCodec
  5. 阅读《C陷阱与缺陷》的知识增量
  6. shell 批量生成随机文件
  7. C# 2.0泛型编程基础(1)
  8. 基于单片机的自动追日系统设计_电机太阳论文,关于基于Atmega32的主动式太阳能追日系统相关参考文献资料-免费论文范文...
  9. 华为路由交换工程师学习笔记汇总
  10. Vue+canvas 实现自定义文字样式转图片,文字与图片进行合成(内蒙古民族大学实习项目)
  11. 编译原理——将代码翻译成四元式序列
  12. 信息收集(OSINT)解释与实践-初
  13. 基于 ClickHouse OLAP 的生态:构建基于 ClickHouse 计算存储为核心的“批流一体”数仓体系...
  14. Maix Bit(K210) 裸机开发教程(六)摄像头使用
  15. 相机标定:像素焦距和毫米焦距的转换,根据内参计算FOV
  16. 电动汽车的新问题,保险公司赔不起,车主养不起
  17. ZDNS助力中国科技网启动RPKI路由验证,我国进入IP地址路由安全认证时代
  18. 宜信区块链|一篇干货文读懂宜信的区块链实践
  19. Git和SVN的优缺点/比较/区别
  20. SEO的心灵窗户:软文技巧

热门文章

  1. Linux编程——文件 IO操作【转】
  2. 【软件工程综合实践】简单工厂模式之蛋糕店(完整代码)
  3. 香蕉派BPI-QCar STEAM创客教育套装设计,兼容BPI:bit 与Micro:bit
  4. Untiy编辑器——Excel转Json工具
  5. 嵌入式计算机外接屏幕没反应怎么办,笔记本外接显示器的嵌入式扬声器没有声音...
  6. 【周总结】-2019年7月第一周
  7. 外键约束(foreign key,简称FK)
  8. 微信小程序开发之——用户登录-获取用户信息(5),意外收获字节跳动内部资料
  9. pycharm环境配置更改
  10. 有一种冷,叫做“冻关机”