我有一个ASCII文件,其中包含许多在地震解释软件中创建的曲面。它们是顶部表面和底部表面之间的一系列插值曲面。族是所有曲面都在常规的网格中的每个点进行采样。 文件结构为: X Y Z1 Z2 ..... Zn 其中X,Y是所有表面共有的坐标向量,Z1,Z2,...,Zn是表面。 我想在Matlab中导入文件并将每个单独的曲面保存到它自己的文件XYZ中。在Matlab中矢量化代码
假设数据导入并存储在变量“数据”,这个代码的工作:
r=size(data,1);
c=size(data,2)-2;
temp(:,1)=data(:,1);
temp(:,2)=data(:,2);
for i = 1:c
temp(:,3)=data(:,i+2);
tempname = ['proportional_',num2str(i*5-5),'ms','.txt']; % naming reflects the
% fact that surfaces
% are in two way travel
% time and that median
% distance between each
% two surfaces is ~ 5
% milliseconds
save (tempname,'temp','-ASCII','-TABS');
end
clear r c temp tempname i
clc
我想通过采取尽可能多的它可能出来的for循环向量化的代码。我认为这样做的保存命令可能是不可能的,但也许其他两条线可以。我的感觉是我应该使用单元阵列或者结构,但我想不出正确的语法。 任何想法?谢谢
如果你有一个ND数组,'data'的格式:'XY Z1 Z2 ...'做它的零垫'X'和'Z''将始终有'numel(X)* numel(Y)'值? – macduff 2012-02-21 21:07:57
我不确定我是否理解这个问题。数据是一个二维数组,其中每个X,Y,Z1,...,Zn是一列 – MyCarta 2012-02-21 23:29:15