How to generate vector with non-linear spacing?
이전 댓글 표시
Hello,
I am attempting to generate an array with non-linear spacing between the elements but struggling to figure out a way to impliment this. I need an array x of points spaced from a real, negative value a to a real, positive value b. Ideally the spacing should follow a Gaussian distribution such that many points are clustered about x=0 in the vicinity of some finite width d. Conversely the spacing should be large at the boundaries. More generally it doesn't have to be Gaussian but some guidance on a scheme where I can specify a length d<<|b-a| across which many points should be distributed would be really appreciated.
I tried to work out an algorithm of sorts from pen and paper but it didn't really work and resulted in something that did not appear to be immediately solveable.
Thanks
채택된 답변
추가 답변 (2개)
a=-1;
b=+1;
d=1/(b-a)^2;
y=d*randn(1,500);
x=sort(y+(a+b)/2);
stem(x,x.^0); xlim([a,b])
A = 1;
B = 5;
std = .9; % need to play with this to get desired shape within desired range,
% if too high, it does not become a normal distribution
% if too low, it does not cover the whole A-B range
mean = 3;
step1Result = mean + std * randn(1e3,1); % create random data with mean and std
step2Result = min(max(step1Result,A),B); % make sure they end up in A-B range
hist(step2Result)
ylabel('# of occurence')
xlabel('Data Value')
카테고리
도움말 센터 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


