matlab这个代码怎么写?

matlab这个代码怎么写?,第1张

使用matlab计算该递推数列,需要要符号计算symbolic toolbox以提高计算精度,从而实现数值方法。对于精度,取|pₙ₊₁-pₙ|<ε为迭代终止条件,计算过程为:依次计算aₙ,bₙ,cₙ,sₙ,pₙ,并检查|pₙ-pₙ₋₁|<ε,一符合即结束循环,代码如下:

digits(30);

ab0=[sym(1) ,sym(1/2)^05 sym(0)];

r=@(x)(x(1:end-1));

n=@(x)(x(end));

abab=@(t)([mean(r(t)) prod(r(t))^05 n(t)+1]);

ab1=abab(ab0);

c=@(t)(sum((r(t)^2)[1 -1]));

s0=sym([1]);

ss=@(t,x)(t-c(x)22^n(x));

s1=ss(s0,ab1);

ee=sym(10e-19);

p=@(ab,s)(sum(r(ab))^2/4/s);

p0=p(ab0,s0);

p1=p(ab1,s1);

pold=1000;

while abs(pold-p1)>=ee;

fprintf('p(%d)=',n(ab1));

disp(vpa(p1,29));

ab1=abab(ab1);

s1=ss(s1,ab1);

pold=p1;

p1=p(ab1,s1);

end;

代码如图,24行

第一次运行,迭代收敛太快,远未π

于是做了一点修改,手工指定了迭代次数为8,并调高了精度。

调整的代码如图

结果如上

1 region = (swc~=-9999)表示判断swc中每个元素是否是不等于-9999,如果不等用1表示否则用0表示。因此region是和swc大小一致的矩阵,里面的每个元素都是对应于swc的相应元素的判断结果。

举个例子

>> swc=[-9999,0;20,-9999]

swc =

-9999 0

20 -9999

>> region=(swc~=-9999)

region =

0 1

1 0

2 fswc = fswcregion + (region==0)-9999这句表示fswc中的元素在region的相应的元素为1的时候不变,为0的时候都变为-9999

举个例子

fswc=[1 2;3 4]

fswc =

1 2

3 4

>> region

region =

0 1

1 0

fswc = fswcregion + (region==0)-9999

fswc =

-9999 2

3 -9999

这里矩阵region等于0的为对角线上的元素,则fswc矩阵相对应的对角线元素都变为-9999

这是一个函数,不能直接运行,应该在命令行输入或在其它m文件中调用才行。

如命令行方式:

>>S = pdfSmap(DATA, ROW, COL)

但在执行这条命令前,请确保先给DATA/ROW/COL赋值

[y,fs,nbits]= wavread(wavFile1);

y就是音频信号;

fs是采样频率,比如说16000就是每秒16000次;

nbit是采样精度,比如说16就是指16位精度的采样;

sound 按采集波形发出声音

fft 傅里叶变换

abs求信号的绝对值

angle 返回相角

后面的()里的就是相应的解释了,实际就是进行信号分析的一小段程序

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/2759461.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-01-10
下一篇2024-01-10

发表评论

登录后才能评论

评论列表(0条)

    保存