⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fxquant.m

📁 信号处理,是一本国处优秀教材的附带程序源码,相信对大家有用!
💻 M
字号:
function X = fxquant( s, bit, rmode, lmode )%FXQUANT      simulated fixed-point arithmetic%-------%   Usage:  X = fxquant( S, BIT, RMODE, LMODE )%%       returns the input signal S reduced to a word-length%       of BIT bits and limited to the range [-1,1). The type of%       word-length reduction and limitation may be chosen with%       RMODE:  'round'         rounding to nearest level%               'trunc'         2's complement truncation%               'magn'          magnitude truncation%       LMODE:  'sat'           saturation limiter%               'overfl'        2's complement overflow%               'triang'        triangle limiter%               'none'          no limiter%---------------------------------------------------------------% copyright 1994, by C.S. Burrus, J.H. McClellan, A.V. Oppenheim,% T.W. Parks, R.W. Schafer, & H.W. Schussler.  For use with the book% "Computer-Based Exercises for Signal Processing Using MATLAB"% (Prentice-Hall, 1994).%---------------------------------------------------------------if nargin ~= 4;        error('usage: fxquant( S, BIT, RMODE, LMODE ).');end;if bit <= 0 | abs(rem(bit,1)) > eps;        error('wordlength must be positive integer.');end;Plus1 = 2^(bit-1);X = s * Plus1;if     strcmp(rmode, 'round');          X = round(X);elseif strcmp(rmode, 'trunc');          X = floor(X);elseif strcmp(rmode, 'ceil');           X = ceil(X);elseif strcmp(rmode, 'magn');           X = fix(X);else            error('unknown wordlength reduction spec.');end;if     strcmp(lmode, 'sat');        X = min(Plus1 - 1,X);        X = max(-Plus1,X);elseif strcmp(lmode, 'overfl');        X = X + Plus1 * ( 1 - 2*floor((min(min(X),0))/2/Plus1) );        X = rem(X,2*Plus1) - Plus1;elseif strcmp(lmode, 'triang');        X = X + Plus1 * ( 1 - 2*floor((min(min(X),0))/2/Plus1) );        X = rem(X,4*Plus1) - Plus1;        f = find(X > Plus1);        X(f) = 2*Plus1 - X(f);        f = find(X == Plus1);        X(f) = X(f) - 1;elseif strcmp(lmode, 'none');           %  limiter switched offelse    error('unknown limiter spec.');end;X = X / Plus1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -