how to find data points of function passed through a distorted "pipe"?

조회 수: 1 (최근 30일)
This is not going to be your ordinary question, but hopefully somebody can assist me.
I want to take a function of data points, for instance a random set of points ("rnpi" in my code), and fit it to an upper and lower bounding function, such as a pair of sine waves (AS1 and AS2 in my code). The data point locations will be distorted by the waves, so that a straight line will come out curvy, etc. I am including a diagram showing what I want. How do I do this?
iP = [0, 88];
iB = [30, 74];
npi = 200; % SHOULD BE EQUAL TO LENGTH OF RANDOM PATTERN BELOW
aa1 = iP(1); % MIN OF RANGE
aa2 = iP(2); % MAX OF RANGE
ab1 = iB(1); % MIN OF RANGE
ab2 = iB(2); % MAX OF RANGE
nz1 = 0:pi/npi:4*pi;
nz2 = pi + (0:pi/npi:4*pi);
nr1 = 3/2; % NUMBER OF REPEATS /2
nr2 = 5/2; % NUMBER OF REPEATS /2
AS1 = (1 + cos(pi + nz1*nr1))/2; % 0-1
AS1 = aa1 + (ab1 * AS1); % aa1-ab1
AS2 = (1 + cos((pi*nr2)-(nz2*nr2)))/2; % 0-1
AS2 = ab2 + ((aa2-ab2) * AS2); % ab1-ab2
plot(AS1)
hold on
plot(AS2)
hold off
% NOW TEST WITH A RANDOM PATTERN
rnpi = round(88 * rand(npi,1));
% THE REST GOES HERE.....................

채택된 답변

John D'Errico
John D'Errico 2023년 11월 7일
A difficult question to answer, since so much is left to guess. And the vaguesness of your question suggests all you want is a result that looks qualitatively as you have drawn. Mathematics is not good at subjective things. Sorry.
But is is not difficult to do something that looks vaguely as you have drawn, as simply an interpolation between two curves.
ULim = [74 88];
LLim = [0 30];
XLim = [0 2*pi];
x = linspace(XLim(1),XLim(2));
UpperFcn = @(x) (cos(x)+1)/2*diff(ULim) + ULim(1);
LowerFcn = @(x) (1-(cos(x))/2)*diff(LLim) + LLim(1);
fplot(UpperFcn,XLim)
hold on
fplot(LowerFcn,XLim)
Now just create an interpolated function that trades off the two boundaries.
TFcn = @(x) (x-XLim(1))./diff(XLim);
MidFcn = @(x) (1-TFcn(x)).*UpperFcn(x) + TFcn(x).*LowerFcn(x);
fplot(MidFcn,XLim)
Again, totally subjective. Just a picture that looks vaguely like what you asked about.
  댓글 수: 2
mark palmer
mark palmer 2023년 11월 8일
이동: Stephen23 2023년 11월 8일
THanks for attempting to make sense of my vagueness.
What I am looking for is to map the points in the first diagram into the points on the second so that the distance between the points and the barriers retains a similar relative placing. So a point in the middle of 1 would stay in the middle of 2, although it may be a different value if the borders are squeezed in.
Anyway, hope that helps.
mark palmer
mark palmer 2023년 11월 8일
이동: Stephen23 2023년 11월 8일
No worries, I gave it a bit of thought,and it only involves some simple math. Problem solved.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by