静力触探数据智能预处理(2)

文章介绍了如何使用Matlab开发工具对静力触探数据进行智能预处理,包括原始数据格式转换、自编函数如Draw_JT、Draw_xiaosan和Save_excel,以及数据提取和消散数据分类,以提高数据处理效率和准确性。
摘要由CSDN通过智能技术生成

静力触探数据智能预处理(2)

前言

数据处理方式已由手工1.0、计算机辅助2.0到人工智能3.0的趋势发展。现场采集的静力触探数据通常是由仪器厂家开发的数据采集软件保存,将原始数据导入Excel中,数据格式需要花费一定的时间整理,当数据量比较大的时候容易出错。利用matlab开发了静力触探数据快速读取程序,可以实现对原始数据的一键提取并快速分类,非专业编写,代码仅供参考。

1、原始数据格式

数据采集仪保存的原始记录是*.kw格式(或者其他格式),可转换成用记事本打开的*.txt格式或者用于excel的*.csv格式,数据处理时要在excel中删除表头或其它符号,比较浪费时间,原始数据格式如下:
在这里插入图片描述
利用matlab编程可以将原始数据读取出来,并转化成标准静力触探数据格式。

2、自编函数

2.1、Draw_JT函数

此函数的功能是将绘制原始静力触探曲线图。

function Draw_JT(jt_data)
% 画静探曲线图
figure(1);
set(gcf,'position',[20 50 800 800]);

subplot(1,3,1),plot(jt_data(:,2),jt_data(:,1),'r');
set(gca,'ydir','reverse');
set(gca,'xaxislocation','top');
xlabel('q_c/mPa','FontWeight','bold');
ylabel('Depth/m','FontWeight','bold');
set(gca,'fontname','times new roman','fontsize',16);

subplot(1,3,2),plot(jt_data(:,3),jt_data(:,1),'b');
set(gca,'ydir','reverse');
set(gca,'xaxislocation','top');
xlabel('f_s/kPa','FontWeight','bold');
% ylabel('深度/m','FontWeight','bold');
set(gca,'fontname','times new roman','fontsize',16);

subplot(1,3,3),plot(jt_data(:,4),jt_data(:,1),'g');
set(gca,'ydir','reverse');
set(gca,'xaxislocation','top');
xlabel('u_2/kPa','FontWeight','bold');
% ylabel('深度/m','FontWeight','bold');
set(gca,'fontname','times new roman','fontsize',16);

成图效果如下:
在这里插入图片描述

2.2、Draw_xiaosan函数

此函数的功能是绘制孔压消散曲线图。

function Draw_xiansan(xs_data)
% 画消散曲线图
figure(2);
set(gcf,'position',[50 50 600 600]);

plot(xs_data(:,1),xs_data(:,4),'r');
% set(gca,'ydir','reverse');
% set(gca,'xaxislocation','top');
ylim([0 1.1*max(xs_data(:,4))]);
ylabel('u_2/kPa','FontWeight','bold');
xlabel('Time/s','FontWeight','bold');
set(gca,'fontname','times new roman','fontsize',16);
title('孔压消散曲线','fontname','宋体');

2.3、Save_excel函数

此函数功能是将静探原始数据保存为excel中,用于后续处理。

function save_xls(jt_data,PathName)
% 将静探数据保存为excel
prompt = {'请输入要保存的文件名:','请输入保存的表格名(sheet):'};
dlgtitle = '保存静探数据为excel';
dims = [1.5 70];
definput = {'JTdata.xls','sheet1'};
answer = inputdlg(prompt,dlgtitle,dims,definput);
filename_jt = strcat(PathName,answer{1});
sheet = answer{2};
xlswrite(filename_jt,jt_data,sheet);

使用此函数时,会自动弹出窗口,确定数据保存的位置以及sheet。

3、数据提取函数

3.1 多个消散数据提取

当原始数据中包含多段消散数据时,使用此程序可快速提取静力触探数据,并将孔压消散数据分类。代码如下:

close all
clear
clc

% 读取静力触探数据并保存为excel

% 程序修改,shangxiang
% 2023年2月6日

% 打开文件所在的文件夹,读取静探数据文件
[inFileName,PathName] = uigetfile('*.kw',...
    '选择静探数据文件','MultiSelect','on');

filename = strcat(PathName,inFileName);

% 将静探数据读取出来
data = importdata(filename);
a = data.data;
n = length(a);

% 提取数据,找出数据起点
for i = 1:n
    b = a(i);
    k = i;
    if b == 0
        break
    end
end

% 判断是否包含消散数据
xiansan = 0;
% 数据格式转换
d = a(k-1:end);
xiansan_begin = 0;
for i = 2:length(d)
    if isnan(d(i))&&isnan(d(i-1))
        xiansan_begin = i;
        fprintf('...这个数据文件中包含消散数据\n消散数据从%d开始...\n',xiansan_begin);
        break;
    end
 end

% 将静探数据与消散数据分离
jt_data_lie = d(1:xiansan_begin-2);
jt_data = reshape(jt_data_lie,6,[]);
jt_data = jt_data';
jt_data = jt_data(:,2:6);
save_xls(jt_data,PathName);

xs_data_lie = d(xiansan_begin:end);
% 将消散数据分离
if xiansan_begin ~= 0,xs_num = 1;end
for i = 2:length(xs_data_lie)
    if isnan(xs_data_lie(i))&&isnan(xs_data_lie(i-2))
        xs_begin(xs_num) = i;
        xs_num = xs_num + 1;
    end
end
xs_begin = [1,xs_begin,length(xs_data_lie)+3];
fprintf('...这个数据文件中包含%d组消散数据...\n',xs_num); 
for i = 2:xs_num+1
    clear xs_data
    xs_data = xs_data_lie(xs_begin(i-1):xs_begin(i)-3);
    xs_data = reshape(xs_data,6,[]);
    xs_data = xs_data';
    xs_data = xs_data(:,2:6);
    save_xls(xs_data,PathName);
end

% 
% % 数据格式说明
% % 一共有五列数据
% % 第一列为深度数据
% % 第二列为锥尖阻力数据
% % 第三列为侧壁摩擦力数据
% % 第四列为孔隙水压力数据
% % 第五列为探头倾角数据
% 
% 
% % 将静探数据保存至excel文件中
% % save_xls(jt_data,PathName);
% 
% % 绘制静探曲线图
Draw_JT(jt_data);
% 
% % 绘制消散曲线图
% % Draw_xiansan(xs_data);
% % save_xls(xs_data,PathName);
% 
% 
% time = xs_data(:,1);
% u2 = xs_data(:,4);
% u2_guiyi = (u2 - min(u2))/(max(u2) - min(u2));
% u2_guiyi_smooth = smoothdata(u2_guiyi,'loess',50);
% figure(11);
% % plot(log(time),u2_guiyi);hold on
% plot(log(time),u2_guiyi_smooth);
% xlabel('log(t)','FontWeight','bold','fontname','times new roman');
% ylabel('归一化u_2','FontWeight','bold');
% set(gca,'fontsize',16);
% title('孔压消散曲线图','fontname','宋体');
% 
% % sheet = inFileName(1:end-3);
% % filename_png = strcat(PathName,sheet,'.png');
% % % 保存曲线图
% % print(gcf, '-dpng', '-r600', filename_png)
% 

3.2、静力触探数据与单个消散数据提取

此程序的功能是将单个孔压消散数据提取出来,并与静力触探数据分离。

close all
clear
clc

% 读取静力触探数据并保存为excel

% 程序修改,shangxiang,2023年8月30日。

% 打开文件所在的文件夹,读取静探数据文件
[inFileName,PathName] = uigetfile('*.kw',...
    '选择静探数据文件','MultiSelect','on');

filename = strcat(PathName,inFileName);

% 将静探数据读取出来
data = importdata(filename);
a = data.data;
n = length(a);

% 提取数据,找出数据起点
for i = 1:n
    b = a(i);
    k = i;
    if b == 0
        break
    end
end

% 判断是否包含消散数据
xiansan = 0;
% 数据格式转换
d = a(k-1:end);
xiansan_begin = 0;
for i = 2:length(d)
    if isnan(d(i))&&isnan(d(i-1))
        xiansan_begin = i;
        fprintf('...这个数据文件中包含消散数据\n消散数据从%d开始...\n',xiansan_begin);
        d(i) = [];
        break;
    end
end

if xiansan_begin == 0
    fprintf('...这个数据文件中不包含消散数据...\n');
    xiansan_begin = length(d) + 2;
end

% 将静探数据与消散数据分离
a_new = reshape(d,6,[]);
a_new_new = a_new';
data_new = a_new_new(:,2:6);
jt_lie = ( xiansan_begin - 2 )/6;
jt_data = data_new(1:jt_lie,:);
xs_data = data_new(jt_lie+1:end,:);

% 数据格式说明
% 一共有五列数据
% 第一列为深度数据
% 第二列为锥尖阻力数据
% 第三列为侧壁摩擦力数据
% 第四列为孔隙水压力数据
% 第五列为探头倾角数据


% 将静探数据保存至excel文件中
save_xls(jt_data,PathName);

% 绘制静探曲线图
Draw_JT(jt_data);

% 绘制消散曲线图
% Draw_xiansan(xs_data);
save_xls(xs_data,PathName);


% time = xs_data(:,1);
% u2 = xs_data(:,4);
% u2_guiyi = (u2 - min(u2))/(max(u2) - min(u2));
% u2_guiyi_smooth = smoothdata(u2_guiyi,'loess',50);
% figure(11);
% % plot(log(time),u2_guiyi);hold on
% plot(log(time),u2_guiyi_smooth);
% xlabel('log(t)','FontWeight','bold','fontname','times new roman');
% ylabel('归一化u_2','FontWeight','bold');
% set(gca,'fontsize',16);
% title('孔压消散曲线图','fontname','宋体');

% sheet = inFileName(1:end-3);
% filename_png = strcat(PathName,sheet,'.png');
% % 保存曲线图
% print(gcf, '-dpng', '-r600', filename_png)

注意,当使用此程序读取其他数据格式时,需要适当的修改代码。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商功贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值