首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab中的代码矢量化

Matlab中的代码矢量化
EN

Stack Overflow用户
提问于 2012-02-22 05:00:20
回答 1查看 263关注 0票数 1

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

假设数据被导入并存储在变量" data“中,下面的代码完成以下工作:

代码语言:javascript
复制
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命令执行此操作可能是不可能的,但其他2行可能可以。我的感觉是我应该使用单元格数组或者结构,但是我想不出正确的语法。有什么想法吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-22 06:03:42

以下是您可以执行的操作:

代码语言:javascript
复制
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) );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9385082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档