matlab xiswrite,wavwrite函数使用问题,请教。

本帖最后由 zhh2100220115 于 2014-12-19 13:20 编辑

还在想那个误差的问题呢。在想是否涉及到浮点数和整型数之间转换时的误差分析问题。还是仅仅这里wavwrite函数的问题。总之做了些试验,还是用和原来差不多的程序:

close all

clc

clear all

t = 1;

fs = 100;

n = 0:1/fs:t-1/fs;

f1 = 10; A = 0.25;

x = A*sin(2*pi*f1*n);

subplot(211)

plot(x,'r')

hold on

N = 24;

wavwrite(x,fs,N,'test.wav');     %MATLAB 写wav文件,看最大最小值

[y, Fs, nbits] = wavread('test.wav');   % MATLAB读wav文件,看最大最小值,预计是在-1和1之间

plot(y,'g')

Amp = num2str(A);bits = num2str(N);

title(strcat('A=',Amp,' N=',bits));

hold off

z = x - y';

subplot(212)

plot(z)

我本来想,A的值在0到1之间,按照前面版主的分析,应该存在很小的误差,基本应该是很准的了。结果也确实如此,都是很小的数量级。

依然,本来想,对于同一个N值,误差是不是就是定了呢?比如,int16,是不是最小值的一半就是误差精度呢?也就是int16对应的误差最大值是:      1/(2^15-1)/2 = 1.525925473799860e-05

可是,试验不同的A值,得到的误差的最大值(从作差图上的峰值放大看)却是不同的!详见附件1。

变换不同的A(0

看来原来猜测不对。那么,会不会是这样量化的呢——将振幅当成最大值,那么精度就和振幅有关了?如,A=0.5,int16的计算为:0.5/(2^15-1)/2=7.629627368999298e-06

放大相关图像,得到A=0.5时误差最大值为:8.34e-6.见附图。

可见,这种猜测的误差最大值和实际的还是有些差距的,而且不可解释的是居然实际的会大,上面分析的可是按照误差最大值来的!这是为什么呢?猜测又不对了么?

同理,当A不变时,对于不同的N,误差最大值貌似不存在倍数关系。这些比值是比较奇怪的数。详见附件2.

当A改变,N改变时,误差最大值之比更无法找到一些比较固定的变化趋势。见附件2.相应程序为:

close all

clc

clear all

t = 1;

fs = 100;

n = 0:1/fs:t-1/fs;

f1 = 10; A = 0.25;

x = A*sin(2*pi*f1*n);

subplot(221)

plot(x,'r')

hold on

N1 = 8;

wavwrite(x,fs,N1,'test.wav');

[y, Fs, nbits] = wavread('test.wav');

plot(y,'g')

Amp1 = num2str(A);bits1 = num2str(N1);

title(strcat('A=',Amp1,' N=',bits1));

hold off

z1 = x - y';

max1 = max(max(z1));

subplot(222)

plot(z1)

title(' x - y'' error')

N2 = 24;

wavwrite(x,fs,N2,'test.wav');     %MATLAB 写wav文件,看最大最小值

[y, Fs, nbits] = wavread('test.wav');   % MATLAB读wav文件,看最大最小值,预计是在-1和1之间

subplot(223)

plot(x,'r')

hold on

plot(y,'g')

Amp = num2str(A);bits2 = num2str(N2);

title(strcat('A=',Amp,' N=',bits2));

hold off

z2 = x - y';

max2 = max(max(z2));

% figure(2)

subplot(224)

plot(z2)

precision_quotient = max1/max2;

title(strcat(' When A=',Amp1,',then:',bits1,'/',bits2,' bits precision quotient is ',num2str(precision_quotient)));

不知道该怎么解释这些奇怪的数了。

1.png

(23.32 KB, 下载次数: 0)

2014-12-19 12:43 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

1

ce3cefb2aa8e5498dc6ec7ca04130f40.png

5724a1379ceb16a514510c7aa4f77048.gif

2014-12-19 12:43 上传

点击文件名下载附件

82.01 KB, 下载次数: 0

附件1

5724a1379ceb16a514510c7aa4f77048.gif

2014-12-19 12:44 上传

点击文件名下载附件

257.01 KB, 下载次数: 0

附件2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值