2017-07-29 32 views
0

我有以下代碼來繪製流體體積中任何位置的切片。創建一個循環來保存輪廓切片中的圖像

clc, clear all, close all 
format long 
%a ddpath('\\ds.leeds.ac.uk\staff\staff6\censsar\Polydisperse'); % <------Change 

%% Import data 
input = importdata('lci_000210.dat',' ',3); 
nx = 96; 
ny = 96; 
nz = 49; 

x = input.data(:,1); 
y = input.data(:,2); 
z = input.data(:,3); 
Lci = input.data(:,4); 

L3d = reshape(Lci,[nx,ny,nz]); 
x3d = reshape(x,[nx,ny,nz]); 
y3d = reshape(y,[nx,ny,nz]); 
z3d = reshape(z,[nx,ny,nz]); 

contourslice(y3d,x3d,z3d,L3d,[],[],[0.3]); 
ax=gca; 
ax.Children(1).LineStyle='none'; 
ax.Children(2).LineStyle='none'; 
ax.Children(3).LineStyle='none'; 
view(25,20); 
colormap jet 
colorbar 

我希望做的是有一個循環的輪廓切片,以便它創建並保存在每個z位置的切片。我希望能夠創建一個z片從零移動到三維軸的電影。

我已經試過類似:

Z=[0 0.1 0.5]; 
for S = 1:length(Z) 
    h = figure 
    contourslice(y3d,x3d,z3d,L3d,[],[],[Z],10); 
    saveas(h,sprintf('Fig%d.png',S)); 
end 

,但是這是不工作,我不知道如何在循環定義z軸,因此它創建在每個點片。

這是link to my data,它是一個.dat文件,因此它包含4列中的數據。

+0

僅供參考,這是很好的做法,以增加所有相關信息通過編輯而不是將其作爲評論發佈。 – m7913d

回答

1

要在循環中創建一組切片,您必須修改代碼,方法是將調用中的最後一個參數替換爲contourslice,方法是指定數組Zi-th元素。

既然你沒有張貼您的輸入數據,我測試了建議的解決方案從MatLab contourslice help略作修改的示例數據,其中

創建九個等值線圖在YZ平面,在XZ沒有情節通過將Sx指定爲九個元素的矢量,將Sy作爲空矢量,將Sz指定爲標量(來自MatLab幫助),將xy平面中的一個圖和一個圖繪製在一起。

同比有到SxSySz參數的定義,適應您的需求。

要創建一個電影,你可以使用的功能:

  • videowriter創建視頻對象
  • open打開視頻文件
  • getframe捕捉軸或數字作爲動畫幀
  • close關閉並保存視頻文件

作爲替代的電影,你可以通過使用功能imwrite

% Load input data 
[X,Y,Z,V] = flow; 
% Define the parameters for the set of slices 
Sx = 1:9; 
Sy = []; 
Sz = []; 
cvals = linspace(-8,2,10); 
% Open the FIGURE window 
figure 
% Create the axes and set tehiur properties 
axis([0,10,-3,3,-3,3]) 
hold on 
daspect([1,1,1]) 
campos([0,-20,7]) 
box on 
% Create the movie object 
mov=VideoWriter('contour_slice_movie.avi'); 
% Open the movie file 
open(mov); 
% Define the number of frames to be captured for each slice 
n_frame_x_image=33; 
% Loop over the desired number of slices 
for i=1:length(Sx) 
    contourslice(X,Y,Z,V,Sx(i),Sy,Sz,cvals) 
    % Capture the frames 
    for j=1:n_frame_x_image 
     FF=getframe(gcf); 
     writeVideo(mov,FF); 
    end 
end 
% Close the movie file 
close(mov); 

enter image description here

希望這有助於創造一個animated gif

Qapla

+0

這是數據文件的鏈接https://www.dropbox.com/s/oqedi55q0qz7qv6/lci_000210.dat?dl=0 –