Scattered Interpolant possible with multiple sample value vectors?

13 vues (au cours des 30 derniers jours)
Yuri Engelshoven
Yuri Engelshoven le 20 Mar 2015
Commenté : Andrei Bobrov le 22 Mar 2015
Hey guys,
I'm trying to build an interpolant which should give me interpolants for 8 different sample value vectors. I have an 95374*8 double list of sample values (UF). Corresponding to which there are two 95374*1 double coordinate lists (xe & ye).
I'm trying to build a loop in which the scatteredinterpolant F is constructed for each of these 8 sample value lists. Thing is that I don't know if it is even possible to create a scatteredinterpolant which consists of more than one value list?
Matlab tells me my F (if i take one set of values) is 1x1. So is it possible to make it 1x8? That looks like this:
%if true
F=scatteredInterpolant(xe,ye,UF(:,1),'natural');
I've tried making something like this, but it won't work as I cant tell matlab to put the values next to the already existing ones:
if true
for i=1:8
F(:,:,i)=scatteredInterpolant(xe,ye,UF(:,i),'natural');
end
The error this yields after the first iteration is: Error using scatteredInterpolant/subsasgn Invalid arguments in indexing operation.
If you guys could help me out that would be awesome! Thanks in advance.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 20 Mar 2015
Please try this:
F = cell(8,1);
for ii =1:8
F{ii} = scatteredInterpolant(xe,ye,UF(:,ii),'natural');
end
  3 commentaires
Yuri Engelshoven
Yuri Engelshoven le 20 Mar 2015
The problem that comes up now is that when I try to evaluate a certain point in one of the cells of F, an error comes up because Matlab now reads it as a single cell in stead of a scatteredpinterpolant.
if true
for i=1:8
% FF=cell2mat(F(:,i)) this operation doesnt work either.
FF=F(:,1);
T(:,1)=XX(:,i);
T(:,2)=YY(:,i);
T=double(T);
UFI(:,i)=FF(T)
end
end
The error i get is: Subscript indices must either be real positive integers or logicals. Line 254 UFI(:,i)=FF(T)
Any clue on how to solve this?
Andrei Bobrov
Andrei Bobrov le 22 Mar 2015
UFI = zeros(size(XX,1),8);
for jj = 1:8
UFI(:,jj) = F{jj}(XX(:,jj),YY(:,jj));
end

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by