Reverse geometric progression algorithm
조회 수: 4 (최근 30일)
이전 댓글 표시
I would like to have a set of points from -b to b using a geometric progression from dpB / 2 to b and mirroring the points with respect to 0. However, I want the grid to be "denser" closer to b, meaning that the gap between 2 points going from dpB/2 to b should decrease not increase. How can I tweek my code to achieve that?
b = 5;
N = 25;
dpB = 2 * b / N;
kk = (N+1)/2;
r = ((dpB/2)/b)^(1 / (kk-1));
pBy = zeros(1,N+1);
mid = (N+1) / 2;
pBy(N+1) = b;
pBy(1) = -b;
for i=N:-1:(mid+1)
pBy(i) = pBy(i+1) * r;
end
pBy(1:mid) = -flip(pBy((mid+1):end));
댓글 수: 0
채택된 답변
John D'Errico
2021년 2월 20일
편집: John D'Errico
2021년 2월 20일
Since you want a symmetric set of points around 0, first generate a set on the positive side of the origin, then just flip them around.
b = 5;
N = 25;
a = b / N % This is just dpB/2, since you multiply then divide by 2.
So I'll generate a set of points that runs effectively down from b to a, with increasing spacing as it moves towards a. What is the geometric increment?
geoinc = nthroot(b/a,N-1)
t = geoinc.^(0:N-1);
V = a + b - a*flip(t)
So the spacing increases as you move towards a, away from b, and it does so in geometric fashion. Now just duplicate the set, negating them.
V = [flip(-V),V]
plot(V,'o')
So easy enough. But no, I won't even try to tweak your code. Far better to learn to use MATLAB as it is designed to be used, manipulating vectors and arrays.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 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!