Matlab中的矢量化代码

Matlab中的矢量化代码,matlab,for-loop,save,vectorization,Matlab,For Loop,Save,Vectorization,我有一个ASCII文件,其中包含在地震解释软件中创建的许多曲面。它们是顶部曲面和底部曲面之间的插值曲面族。所有曲面都在规则squuare栅格的每个点处采样。 文件结构为: X Y Z1 Z2…..锌 其中X,Y是所有曲面的公共坐标向量,Z1,Z2,…,Zn是曲面。 我想在Matlab中导入该文件,并将每个曲面保存到其自己的文件XYZ中 假设数据导入并存储在变量“data”中,则此代码执行以下任务: r=size(data,1); c=size(data,2)-2; temp(:,1)=data(

我有一个ASCII文件,其中包含在地震解释软件中创建的许多曲面。它们是顶部曲面和底部曲面之间的插值曲面族。所有曲面都在规则squuare栅格的每个点处采样。 文件结构为: X Y Z1 Z2…..锌 其中X,Y是所有曲面的公共坐标向量,Z1,Z2,…,Zn是曲面。 我想在Matlab中导入该文件,并将每个曲面保存到其自己的文件XYZ中

假设数据导入并存储在变量“data”中,则此代码执行以下任务:

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循环中提取出来来对代码进行矢量化。我认为为save命令执行此操作可能不可能,但可能其他两行可以。我的感觉是我应该使用单元格数组或者结构,但是我想不出正确的语法。
有什么想法吗?谢谢

以下是您可以做的:

temp = arrayfun( @(x) data(:,[1 2 x]), 3:size(data,2), 'UniformOutput',0 );
arrayfun( @(x) dlmwrite( strcat('proportional_',num2str(x*5-5),'ms.txt'), ...
         temp{x}, '\t' ), 1:numel(temp) );

如果您有一个n-D数组,
data
格式为:
xyz1z2…
它是否将
X
Y
矢量归零,因为
Z*
将始终具有
numel(X)*numel(Y)
值?我不确定我是否理解这个问题。数据是一个二维数组,其中X,Y,Z1,…,Zn中的每一个都是一列。我将尽早尝试(并尝试理解它)。我会回来的。谢谢尤扎+1为。。。好。。。某物