www.gusucode.com > 语音信号的分析源码程序 > 语音信号的分析源码程序/scramble/localperm.m
function I = localperm(N,R) % I = localperm(N,R) % I is a random permutation of the integers from 1:N. However, % unlike RANDPERM, the indices remain somewhat local. % Specifically, the displacement I(x) - x has a gaussian % distribution with standard deviation R. % 2010-11-13 Dan Ellis dpwe@ee.columbia.edu I = zeros(1,N) - 1; D = round(R*randn(1,N)); remaining = ones(1,N); % Assign them randomly, to avoid systematic problems with the last few for i = randperm(N) % Ideal placement - offset by D(i) from start pos ipos = i + D(i); % Find the nearest unused slot to put it in frem = find(remaining); [err,posix] = min(abs(frem - ipos)); % OK, there it goes pos = frem(posix); I(pos) = i; remaining(pos) = 0; end