add / interpolate arrays of different length
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello community,
i have two array's tsol and ysol. Each array has the length of 9;
I have also an error estimate array errorEst. The error estimate has only 4 elements.
The four elements have a "time" length of 0.25.
The errorEst
tsol = linspace(0,1,9);
ysol = sin(tsol*pi);
errorEst = rand(1,4); %each bar has a length of 0.25;
bar(errorEst);
plot([0 0.25 0.5 0.75; 0.25 0.5 0.75 1],[errorEst; errorEst]/0.25,'k')
title('gradient of errorEst ')
xlabel('t')
ylabel('d errorEst / dt')
% who could i integrate this gradient of errorEst w.r.t the time tSol and
% add to ysol?
% the first part should be a continous (function/plot)
% is there an elegant solution, which is parallelizable?
the solution should be plottet:
%yp = ysol + errorEstLin;
%ym= ysol -errorEstLin;
0 Kommentare
Antworten (1)
Tony
am 17 Mai 2024
Here's one way to do it by piece-wise integration by checking which interval you are.
tsol = linspace(0,1,9);
ysol = sin(tsol*pi);
errorEst = rand(1,4); %each bar has a length of 0.25;
bar(errorEst);
errorEst0 = 0; % need to specify initial error at t=0
errorEstLin = zeros(size(tsol));
for i = 1:numel(tsol)
if i == 1
errorEstLin(i) = errorEst0;
else
errorEstIntervalPrev = ceil(tsol(i-1) / 0.25 + 1e-12); %1e-12 to exclude lower bound of interval from interval
errorEstIntervalCurr = ceil(tsol(i) / 0.25);
errorEstLin(i) = errorEstLin(i - 1);
if errorEstIntervalCurr == errorEstIntervalPrev
errorEstLin(i) = errorEstLin(i) + (tsol(i) - tsol(i-1)) * errorEst(errorEstIntervalPrev);
else
errorEstLin(i) = errorEstLin(i) ...
+ (0.25 * errorEstIntervalPrev - tsol(i-1)) * errorEst(errorEstIntervalPrev) ...
+ sum(0.25 * errorEst(errorEstIntervalPrev + 1 : errorEstIntervalCurr - 1)) ...
+ (tsol(i) - 0.25 * (errorEstIntervalCurr - 1)) * errorEst(errorEstIntervalCurr);
end
end
end
yp = ysol + errorEstLin;
ym= ysol -errorEstLin;
plot(tsol', [ysol ; yp ; ym ; errorEstLin]')
legend({'ysol', 'yp', 'ym', 'errorEstLin'})
0 Kommentare
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!