Pod/Spod分析

POD分析

Step 1: 读取数据并保存为 .mat文件

方便后续直接加载,避免浪费时间

clc; clear;
%% ===================== 参数设置 =====================
file_path = 'E:\2Dcascade_LES\VGfile_Spod\'; % 数据文件夹路径
prefix = 'VGles-'; % 文件名前缀
suffix = ''; % 文件名后缀(可为空)
target_variable = 'density'; % 目标变量(如 'density')
start_num = 127405; % 起始帧编号
end_num = 129510; % 结束帧编号
step = 5; % 帧步长(间隔)

%% ===================== 数据读取 =====================
[all_data, coords, snapshot_files] = read_data_variable( ...
file_path, prefix, suffix, target_variable, start_num, end_num, step);

%% ===================== 保存为 MAT 文件 =====================
save('input_data.mat', 'all_data', 'coords', 'snapshot_files', 'target_variable', '-v7.3');

fprintf('[保存成功] 数据已保存为 pod_input_data.mat\n');

需要用到函数 read_data_variable.m

function [all_data, coords, snapshot_files] = read_data_variable(file_path, prefix, suffix, ...
                                                                 target_variable, start_num, end_num, step)
% =========================================================================
% 读取指定路径下多个数据文件中的目标变量,并提取其坐标信息。
%
% 输入参数:
%   file_path        - 数据文件所在目录
%   prefix           - 文件名前缀
%   suffix           - 文件名后缀(如 '.csv')
%   target_variable  - 要提取的变量名称(如 'density')
%   start_num        - 起始编号
%   end_num          - 结束编号
%   step             - 编号步长
%
% 输出参数:
%   all_data         - 每帧目标变量列向量组成的矩阵 (N_cell × N_frame)
%   coords           - 网格点坐标矩阵 (N_cell × 3),只从首帧读取
%   snapshot_files   - 成功读取的文件名列表(用于记录)
% =========================================================================

    all_data = [];
    coords = [];
    snapshot_files = {};

    % 遍历每个时间步的文件
    for num = start_num:step:end_num
        filename = sprintf('%s%d%s', prefix, num, suffix);
        full_filename = fullfile(file_path, filename);

        if isfile(full_filename)
            try
                opts = detectImportOptions(full_filename, 'Delimiter', ',');
                table_data = readtable(full_filename, opts);
                fprintf('[读取成功] %s\n', filename);

                % 初始化坐标(只提取一次)
                if isempty(coords)
                    coords = [table_data.x_coordinate, ...
                              table_data.y_coordinate, ...
                              table_data.z_coordinate];
                end

                % 提取目标变量
                if ismember(target_variable, table_data.Properties.VariableNames)
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值