matlab重构流场,前面没问题 到了figure的时候出问题 显示
%这一节程序的目的:重构某一个原始的瞬态流场,_**并且将速度场数据拟合到规整的网格中。然后做平面云图**_。
n_recon = input('重构的流场是第几个:');%程序运行至此,需要人为在命令行窗口输入重构的流场是第几个
at=zeros(r,1);% 时间系数矩阵, r * 1
for j = 1:r
at(j,1)=dot(X_fluc(:,n_recon),POD_vector(:,n_snapshots-j+1));%计算时间系数,r*1的矩阵
end
X_reconstruct=zeros(6028500,1);
for j=1:3 %用前50个能量贡献较大的POD模态重构瞬态速度场,这里的50可以改成100,200,500等任意数
X_reconstruct = X_reconstruct+at(j,1)*POD_vector(:,n_snapshots-j+1);%308400*1
end
recon_u = X_reconstruct(1:2009500,1);%重构以后的速度U
recon_v = X_reconstruct((2009500+1):(2*2009500),1);%重构以后的速度V
recon_w = X_reconstruct((2009500*2+1):(3*2009500),1);%重构以后的速度W
xx = linspace( -0.0787 , 0.0787 , 100 );%对X坐标进行线性插值,形成1*100的行向量
yy = linspace( -0.0787 , 0.0787 , 100 );%对Y坐标进行线性插值,形成1*100的行向量
zz = linspace( -0.001 , 0.818 , 100 );%对Z坐标进行线性插值,形成1*100的行向量
nx = length(xx);
ny = length(yy);
nz = length(zz);
[x,y,z] = meshgrid(xx,yy,zz);% 100*100*100
u_new=griddata(fluent_data(:,1),fluent_data(:,2),fluent_data(:,3),recon_u,x,y,z);%将重构的速度U拟合到新的坐标系,100*100*100
v_new=griddata(fluent_data(:,1),fluent_data(:,2),fluent_data(:,3),recon_v,x,y,z);%将重构的速度V拟合到新的坐标系,100*100*100
w_new=griddata(fluent_data(:,1),fluent_data(:,2),fluent_data(:,3),recon_w,x,y,z);%将重构的速度W拟合到新的坐标系,100*100*100
u_new(isinf(u_new)) = 0;%如果值为无穷大,则赋值为0
u_new(isnan(u_new)) = 0;%如果非数值,则赋值为0
v_new(isinf(v_new)) = 0;
v_new(isnan(v_new)) = 0;
w_new(isinf(w_new)) = 0;
w_new(isnan(w_new)) = 0;
figure;
contourf(x,y,u_new,v_new);
figure;
contourf(y,z,v_new,w_new);
figure;
contourf(x,z,u_new,w_new);
但是总会报错 不知道怎么办了 目的是 将速度场数据拟合到规整的网格中。然后做平面云图