У меня есть файл ASCII, содержащий ряд поверхностей, созданных в программном обеспечении для интерпретации сейсмических данных. Это семейство интерполированных поверхностей между верхней и нижней поверхностями. Это семейство. Все поверхности отбираются в каждой точке регулярной квадратной сетки.
Структура файла:
X Y Z1 Z2 ..... Zn
Где 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. Я думаю, что сделать это для команды сохранения может быть невозможно, но, возможно, другие 2 строки могут. У меня такое чувство, что я должен использовать массивы клеток или, возможно, структуры, но я не могу придумать правильный синтаксис.
Есть идеи? Спасибо