I have data consist of X(x coordinate) Y(y coordinate) Z(z coortinate) U(velocity).
there is four z height (0.05,0.18,0.31 and 0.44 )
I tried to create 3D countour plot with given code but it fails.
xyzu = readmatrix('velocity3d.txt');
xyzu = [xyzu(1,:); xyzu];
x=xyzu(:,1);
y=xyzu(:,2);
z=xyzu(:,3);
u=xyzu(:,4);
% [Ux,xix] = unique(x);
% dxix = diff(xix)
Xm = reshape(x, 6, []);
Error using reshape
Product of known dimensions, 6, not divisible into total number of elements, 221.
Ym = reshape(y, 6, []);
Zm = reshape(z, 6, []);
Um = reshape(u, 6, []);
figure
contour3(Xm,Ym,Zm,Um)
colormap(turbo)
colorbar
Which code I need to create 3D velocity countour plot? Thank you.
Note: I uploaded my data as an attachment.

 채택된 답변

Torsten
Torsten 2022년 12월 25일
편집: Torsten 2022년 12월 25일
xyzu = readmatrix('velocity3d.txt');
x=xyzu(:,1);
y=xyzu(:,2);
z=xyzu(:,3);
u=xyzu(:,4);
F = scatteredInterpolant(x,y,z,u);
xq = linspace(min(x),max(x),20);
yq = linspace(min(y),max(y),20);
zq = linspace(min(z),max(z),20);
[xq yq zq] = meshgrid(xq,yq,zq);
uq = F(xq,yq,zq);
xslice = mean(x);
yslice = mean(y);
zslice = mean(z);
slice(xq,yq,zq,uq,xslice,yslice,zslice)
colormap(turbo)
colorbar

댓글 수: 7

JACK LONDON
JACK LONDON 2022년 12월 25일
Thank you.
Is there a way to show in this format:
Torsten
Torsten 2022년 12월 25일
편집: Torsten 2022년 12월 25일
Where is z and where is u ?
I seems this is a surface plot for (x,y,u) data where u is standard-deviation wave height.
But you have (x,y,z,u) data.
JACK LONDON
JACK LONDON 2022년 12월 25일
편집: JACK LONDON 2022년 12월 25일
Note: maybe source file need to be revised. sorting for z values. I am arranging now.
In the data 3th column is z height and 4th column is v velocity.
There are x and y values for four different z values; (0.05, 0.18, 0.31 and 0.44 m)
For the z =0.05; x,y and u values should shown in the 3d countour plot
For the z =0.18; x,y and u values should shown in the 3d countour plot
For the z =0.31; x,y and u values should shown in the 3d countour plot
For the z =0.44 ; x,y and u values should shown in the 3d countour plot
Thanks.
Torsten
Torsten 2022년 12월 25일
편집: Torsten 2022년 12월 25일
So you want four surface plots like the one above - each for a different height ?
Then prepare four input files - each for constant z - and use Voss's answer to your previous question to plot with contourf or surf.
Torsten
Torsten 2022년 12월 25일
I tried Voss's answer but I can t figure out how I combine for four different z values.
You don't have to combine anything. Make four files of the one you posted and apply Voss's code to each file separately.
JACK LONDON
JACK LONDON 2022년 12월 25일
편집: JACK LONDON 2022년 12월 25일
In this case there is not 3d countour only 4 different 2d velocity countour seperately. I need 3d countour.
Torsten
Torsten 2022년 12월 25일
편집: Torsten 2022년 12월 25일
Can you give a link to a plot you are talking about ? The one you posted is a 3d surface plot you can get for each z-value separately, but not for all z-values together.
This is all you can get:
xyzu = readmatrix('velocity3d.txt');
x=xyzu(:,1);
y=xyzu(:,2);
z=xyzu(:,3);
u=xyzu(:,4);
F = scatteredInterpolant(x,y,z,u);
xq = linspace(min(x),max(x),100);
yq = linspace(min(y),max(y),100);
zq = linspace(min(z),max(z),100);
[xq yq zq] = meshgrid(xq,yq,zq);
uq = F(xq,yq,zq);
zslice = [0.05,0.18,0.31,0.44];
h = slice(xq,yq,zq,uq,[],[],zslice);
colormap(turbo)
colorbar
set(h,'EdgeColor','none')

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

추가 답변 (0개)

카테고리

질문:

2022년 12월 25일

편집:

2022년 12월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by