2017-06-30 1 views
0

J'ai un code cfd fortran qui affiche les résultats dans un fichier de résultats binaires. J'ai importé le fichier binaire dans matlab et lu et transformé en une matrice 3d. le code pour le faire est ci-dessous:2d découper dans une matrice 3d créée à partir d'un fichier de données binaires

% function [rtime,itime,dt,nx,ny,nz,deltax,deltay,rlenz,rw] = Read_press3d(press.420000) 
% _________________________________________________________________________ 
% name; 
fid = fopen('press.420000', 'rb'); 
% fid; 
rtime = fread(fid, 1,   'float64'); 
itime = fread(fid, 1,   'int32'); 
dt  = fread(fid, 1,   'float64'); 
nx0 = fread(fid, 1,   'int32'); 
ny0 = fread(fid, 1,   'int32'); 
nz  = fread(fid, 1,   'int32'); 
deltax = fread(fid, 1,   'float64'); 
deltay = fread(fid, 1,   'float64'); 
rlenz = fread(fid, 1,   'float64'); 
rwtoto = fread(fid, nx0*ny0*nz, 'float64'); 
fclose(fid); 

rw = reshape(rwtoto,[nx0,ny0,nz]); 
% v = reshape(vtoto,[nx0,ny0,nz]); 
% w = reshape(wtoto,[nx0,ny0,nz]); 

% u = utoto(1:) 
% lag = toto1(1:nx0-1,1:ny0-1)'; 
% dudn = toto2(1:nx0-1,1:ny0-1)'; 
% 
% % valxy(ny0,:) = valxy(1,:); 
% % valxy(:,nx0) = valxy(:,1); 

nx = nx0-1; 
ny = ny0-1; 

Ici, rw est la pression remodelé dans un seul tableau 257x512x390. Maintenant, je veux voir la pression dans ce tableau 3D comme un tracé de contour ou le visualiser d'une autre manière utile. Je sais que l'one-way est de créer une tranche 2d à différents endroits dans le plan y-z, ainsi le 512x390.

J'ai essayé d'utiliser la fonction slice, mais je n'arrive pas à comprendre comment la faire fonctionner. J'ai seulement les valeurs de la pression stockées dans le tableau 3d. Je n'ai pas les emplacements x, y, z correspondants, mais les longueurs du tableau sont basées sur delta x, y, z, donc en fait la taille de ma matrice 3d devrait correspondre aux coordonnées.

Toute aide sur la façon de dessiner une tranche ou tout autre moyen de visualiser les données sera la bienvenue.

+0

un coup d'oeil à [ ' isosurface'] (http://fr.mathworks.com/help/matlab/ref/isosurface.html) –

Répondre

0

La fonction imagesc de Matlab est l'une des meilleures façons de visualiser des matrices 2D. Si la dimension x de votre tableau 3D est l'axe du temps, vous pouvez boucle à travers les matrices 2D dans le plan yz et les tracer en couleur à l'aide imagesc, comme ceci:

for i = 1:size(rw,1) 
    pressure = rw(i,:,:); % Extract the ith pressure matrix 
    imagesc(pressure)  % Plot in color 
    pause(0.1)    % Pause execution for 10th of second for viewing 
end