本帖最后由 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 上传
1
2014-12-19 12:43 上传
点击文件名下载附件
82.01 KB, 下载次数: 0
附件1
2014-12-19 12:44 上传
点击文件名下载附件
257.01 KB, 下载次数: 0
附件2