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)