该Matlab程序用于画多条测线的多测道图
同时代码实现了批量处理文件,数据格式转换,指定路径批量存储图片,下面即为所要呈现的代码:
// A code block
%% 主程序部分
clc;
clear all;
close all;
shuju1=zeros(41*69,15);
shuju2=zeros(39*69,2);
nt=69;
t=load("t.dat");
x1=load("x1.dat");
x2=load("x2.dat");
for ii=1:15
figure
filename=strcat("A1B1_",num2str(ii*20+80),"_dbdt_WaveTransfer.dat"); %用于生成一系列文件
if ii= =4 || ii==5
shuju2(:,ii-3)=load(filename)';
data2=zeros(39*69,3);
for ix=1:39
for it=1:69
data2((ix-1)*nt+it,1)=x2(ix);
data2((ix-1)*nt+it,2)=t(it);
end
data2(:,3)=shuju2(:,ii-3);
end
C=linspecer(nt); %子程序linspecer的作用是对nt个时间道分配nt个颜色
sj=unique(data2(:,2)); %时间道t,unique(A)相当于只要数组A中非重复的元素,并从小到大进行排列
for i = 1:1:nt % length(sj)
sy = find( data2(:,2)==sj(i) );
semilogy(data2(sy,1),smooth(data2(sy,3),5),'color',C(i,:),'linewidth',2); %对数据进行光滑处理
% semilogy(data2(sy,1),data2(sy,3),'color',C(i,:),'linewidth',2); %对数据进行三次样条插值
hold on;
end
xlim([0 380])
else
shuju1(:,ii)=load(filename)';
data1=zeros(41*69,3);
for ix=1:41
for it=1:69
data1((ix-1)*nt+it,1)=x1(ix);
data1((ix-1)*nt+it,2)=t(it);
end
data1(:,3)=shuju1(:,ii);
end
C=linspecer(nt); %子程序linspecer的作用是对nt个时间道分配nt个颜色
sj=unique(data1(:,2)); %时间道t,unique(A)相当于只要数组A中非重复的元素,并从小到大进行排列
for i = 1:1:nt % length(sj)
sy = find( data1(:,2)==sj(i) );
semilogy(data1(sy,1),smooth(data1(sy,3),5),'color',C(i,:),'linewidth',2);
% semilogy(data1(sy,1),data1(sy,3),'color',C(i,:),'linewidth',2);
hold on;
end
xlim([0 400])
end
ylim([1.5e-10 1.5*1e-7])
set(gcf,'unit','centimeters','position',[3 5 30 10])
set(gca, 'LineWidth',1.5,'Fontname', 'TimesNewroman','FontWeight','bold&#