guohf 发表于 2014-7-30 15:29

matlab 如何在有矩形截面的三维弯槽上生成等值线云图切

数据是用CFD计算出来的,因要在切片云图中叠加其他的计算结果,不好用TECPLOT等其他画图软件来处理。想用MATLAB编程来画,查看相关算例,都是对立体区域进行切片处理的,而我的计算区域是有矩形截面的三维(直或弯曲)弯槽,想得到下图结果:                              用了两种方法,但都有问题,请高手指点迷经,谢谢。 法一:直接加载三维流场(第一列是节点数,第二到4列分别是x,y,z坐标,第5列是相应的z向速度值)    压了两次






clear;clc; load vzvelox=vzvelo(:,2);y=vzvelo(:,3);z=vzvelo(:,4);u=vzvelo(:,5);mm=;del=[(mm(2)-mm(1))/30,(mm(4)-mm(3))/30,(mm(6)-mm(5))/30]; =meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4),mm(5):del(3):mm(6));ui=griddata(x,y,z,u,xi,yi,zi,'cubic'); %%这里报错“Too many input arguments.”用TriScatteredInterp也不行,应是弯管的问题。想把直角弯管分成三部分来做,但在相交部分的切片不知怎么生成?另外,对于有弯头的弯管在弯头部分又该怎样处理?contourslice(xi,yi,zi,ui,[],0,[]); %%%这的表达好象也有问题 法二:将要画的切片数据分别保存出来,画等值线,但不知道怎么生成三维的。 clear all; clc;x0r1=['D:\fluent\ x0vzre1'];x2r1=['D:\fluent\ x2vzre1'];y0r1=['D:\fluent\y0vzre1']; hold on data_al=importdata(x0r1);dat=data_al.data;x0r1=dat(:,3:5);%% x0r1=dat(:,2:5);x=x0r1(:,1);y=x0r1(:,2); w=x0r1(:,3);%%z=x0r1(:,3); w=x0r1(:,4);mm= %% min(z) max(z)];del=[(mm(2)-mm(1))/50,(mm(4)-mm(3))/50]%%,(mm(6)-mm(5))/50];=meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4))%% mm(5):del(3):mm(6) %用三维网格生成时xi, yi, zi都为空矩阵,因x值不变wi=griddata(x,y, w,xi,yi,'cubic');=contourf(xi,yi,wi,200);set(h,'Color','None');%colorbarclear xywmmdel xi yi wi cs h    %%不能将云图画在x=0的面上 data_al2=importdata(x2r1);dat2=data_al2.data;x2r1=dat2(:,3:5);x=x2r1(:,1);y=x2r1(:,2); w=x2r1(:,3);mm=;del=[(mm(2)-mm(1))/50,(mm(4)-mm(3))/50];=meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4));wi=griddata(x,y,w,xi,yi,'cubic');=contourf(xi,yi,wi,50);set(h,'Color','None');%colorbarclear xywmmdel xi yi wi cs h   %%不能将云图画在x=0.0002的面上 data_al3=importdata(y0r1);dat3=data_al3.data;y0r1=dat3(:,);x=y0r1(:,1);y=y0r1(:,2); w=y0r1(:,3);mm=;del=[(mm(2)-mm(1))/50,(mm(4)-mm(3))/50];=meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4));wi=griddata(x,y,w,xi,yi,'cubic');=contourf(xi,yi,wi,50);%shadinginterpset(h,'Color','None'); %colorbar%%不能将云图画在y=0的面上hold off
页: [1]
查看完整版本: matlab 如何在有矩形截面的三维弯槽上生成等值线云图切