I have some data which I have interpolated as follows:
Data = load("data.txt")
x = Data(:,1);
y = Data(:,2);
z = Data(:,3);z=-z;
c = Data(:,4);
F = scatteredInterpolant(x,y,z,c);
N = 50;
xvec = linspace(min(x), max(x), N);
yvec = linspace(min(y), max(y), N);
zvec = linspace(min(z), max(z), N);
[xq, yq, zq] = meshgrid(xvec, yvec, zvec);
vq = F(xq, yq, zq);
What I want to do is to extract the value of vq for a given xq,yq,zq.
Like vq(xq==21.7267 & yq==36.9072 & zq==-0.9551), which gives me an empty column vector.
If I do F(21.7267,36.9072,-0.9551) is this the correct vq?

댓글 수: 2

darova
darova 2021년 2월 14일
Please attach the data
tandemuse
tandemuse 2021년 2월 14일
I have uploaded the data

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

 채택된 답변

Cris LaPierre
Cris LaPierre 2021년 2월 14일
편집: Cris LaPierre 2021년 2월 14일

0 개 추천

Always more helpful for us if you share 1) your data and 2) the complete error message (all the red text).
This example on the scatteredInterpolant documentation page shows how to use the results of meshgrid to determine vq. Make sure you are using the 4th input correctly. MATLAB expects it to be the sample values, specified as a vector that defines the function values at the sample points, v = F(x,y,z).

댓글 수: 5

tandemuse
tandemuse 2021년 2월 14일
I have uploaded the data. There is no error message I just get an empty column vector.
Walter Roberson
Walter Roberson 2021년 2월 14일
I don't think that is the issue. The issue is that the logical comparisons were each true for multiple locations, and indexing with multiple selected values in multiple indices gets you results at the cross-product rather than at the intersection.
tandemuse
tandemuse 2021년 2월 14일
편집: tandemuse 2021년 2월 14일
If I do F(21.7267,36.9072,0.9551) is this the correct vq?
Walter Roberson
Walter Roberson 2021년 2월 14일
Yes, that would recalculate rather than extract from the stored value.
However is your z positive or negative? You changed sign compared to your other comments
tandemuse
tandemuse 2021년 2월 14일
True it should be negative

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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2021년 2월 14일

0 개 추천

vq(xq==2 & yq==3 & zq==5)

댓글 수: 3

Walter Roberson
Walter Roberson 2021년 2월 14일
better yet is ismembertol instead of ==
tandemuse
tandemuse 2021년 2월 14일
vq(xq==21.7267 & yq==36.9072 & zq==-0.9551) gives me an empty column vector
Walter Roberson
Walter Roberson 2021년 2월 14일
That why I said to use ismembertol()

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

카테고리

도움말 센터File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

제품

릴리스

R2020b

질문:

2021년 2월 14일

편집:

2021년 2월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by