生成潮位矩阵数据

clear;clc
for k=1:1:15    %% 此处的15记得修改,15个开边界点
filename=sprintf("data_%d.mat",k);
load(filename);
Tidal(:,k)=TimeSeries(1,:);
end

%%输出
fid=fopen("Elevation.dat","wt");
[p,q] = size(Tidal)
for i=1:1:p
    for j=1:1:q
        if j==q
            fprintf(fid,"%10.6f\n",Tidal(i,j));
        else
            fprintf(fid,"%10.6f\t",Tidal(i,j));
        end
    end
end
fclose(fid);

 

clc; clear; close all; fid = fopen('h329-Jul2017-Jul2018-c1.txt','r'); fgetl(fid); % 读取数据 data = textscan(fid, '%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f', ... 'CollectOutput', true); fclose(fid); data = data{1}; % 提取数值矩阵 % 合并为24小时数据 N = size(data,1); Ndays = N/2; % 天数 dailychaowei = zeros(Ndays, 24); % 每天24小时潮位值 time24 = zeros(Ndays, 3); % 每天的日期 [Year, Month, Day] for k = 1:Ndays i = 2*k - 1; j = 2*k; % 上下午的拼接 dailychaowei(k, 1:12) = data(i, 5:16); dailychaowei(k, 13:24) = data(j, 5:16); time24(k,:) = data(i, 1:3); end % 将每日数据展开为时间序列 totaltime = Ndays * 24; Hourlylength = zeros(totaltime, 1); year_hourly = zeros(totaltime, 1); month_hourly = zeros(totaltime, 1); day_hourly = zeros(totaltime, 1); hour_index = zeros(totaltime, 1); for k = 1:Ndays idx = (k-1)*24 + (1:24); Hourlylength(idx) = dailychaowei(k, :); year_hourly(idx) = time24(k, 1); month_hourly(idx) = time24(k, 2); day_hourly(idx) = time24(k, 3); hour_index(idx) = 0:23; end % 构建时间戳序列 timeSeries = datetime(year_hourly, month_hourly, day_hourly, hour_index, 0, 0); %% Step 1: 判断奇异值 strange = false(length(Hourlylength), 1); % 初始化异常值标记 for i = 3:length(Hourlylength)-2 % 计算该极小值左右两侧2个点的斜率 if i > 2 && i < length(Hourlylength)-1 kcb = Hourlylength(i) - Hourlylength(i-1); % 四个斜率值 kba = Hourlylength(i-1) - Hourlylength(i-2); kdc = Hourlylength(i+1) - Hourlylength(i); ked = Hourlylength(i+2) - Hourlylength(i+1); % 检查斜率的符号变化(M型与W型) if sign(kba) ==1 && sign(kcb)==-1 && sign(kdc) ==1 && sign(ked)==-1 strange(i) = true; end if sign(kba) ==-1 && sign(kcb)==1 && sign(kdc) ==-1 && sign(ked)==1 strange(i) = true; end end end numOutliers = sum(strange); disp(['检测到奇异值点数量: ', num2str(numOutliers)]); %% Step 2: 插值处理:对奇异值进行三次样条插值 HourlySeries_clean = Hourlylength; idx_good = find(
最新发布
03-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值