Interpulating multipule sets of data without loops

3 Ansichten (letzte 30 Tage)
Ariel
Ariel am 8 Feb. 2023
Beantwortet: Tejas am 12 Nov. 2024
Hello,
I am trying to do 1D interpulation on multipule sets of data without using loops.
If I must use a loop, the code would look as follows:
X ; % set of grid points, where each column is a different set
V ; % set of data points, where each column is a different set
xq ; % new grid points I would like to interpulate V at.
% Note that size(X) is the same as size(V) and they are both 2D
% All these values are defined priorly in the code.
Vq = zeros(length(xq),size(V,2)) ;
for i=1:size(X,2)
Vq(:,i) = interp1(X(:,i),V(:,i),xq);
end
Is there a way I can run a simular algorithem without running this loop?
Thank you in advance.
  2 Kommentare
Fifteen12
Fifteen12 am 8 Feb. 2023
Can you explain what (size(X,1),1) means? Are you saying that xq has the same number of rows as X?
Fifteen12
Fifteen12 am 8 Feb. 2023
Maybe try splitapplly? Sorry I don't have time to run the code on this.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Tejas
Tejas am 12 Nov. 2024
Hello Ariel,
To perform 1-D interpolation on multiple sets of data without using a loop, consider these steps:
  • Create a function handle that utilizes the 'interp1' function for 1-D interpolation on a given column of 'X' and 'V'.
interpFcn = @(col) interp1(X(:, col), V(:, col), xq);
  • Use 'arrayfun' to apply this function to each column of 'X' and 'V', storing the results in 'Vq'.
Vq = arrayfun(interpFcn, 1:size(X, 2), 'UniformOutput', false);
Vq = cell2mat(Vq);
For more information on the 'arrayfun' function, refer to this documentation: https://www.mathworks.com/help/releases/R2021a/matlab/ref/arrayfun.html

Kategorien

Mehr zu Interpolation finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by