how to find data points of function passed through a distorted “pipe”?
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 BELOWaa1 = iP(1); % MIN OF RANGE
aa2 = iP(2); % MAX OF RANGEab1 = iB(1); % MIN OF RANGE
ab2 = iB(2); % MAX OF RANGEnz1 = 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 /2AS1 = (1 + cos(pi + nz1*nr1))/2; % 0-1
AS1 = aa1 + (ab1 * AS1); % aa1-ab1AS2 = (1 + cos((pi*nr2)-(nz2*nr2)))/2; % 0-1
AS2 = ab2 + ((aa2-ab2) * AS2); % ab1-ab2plot(AS1)
hold on
plot(AS2)
hold off% NOW TEST WITH A RANDOM PATTERN
rnpi = round(88 * rand(npi,1));% THE REST GOES HERE.....................
NOTE:-
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
Prashant Kumar answered . 2023–11–08 13:39:04
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.
SEE COMPLETE ANSWER CLICK THE LINK