编写一个循环来迭代地从文件夹中导入文件并对它们进行计算

6次浏览(过去30天)
如果我要问的一些问题是微不足道的,我提前道歉,但不幸的是,我仍然是一个初学者。
我有一个500个csv文件的文件夹,名为“pressure_export_R1_Blade_tstep_*number*”,其中数字是偶数(0-2-4-6…998)。
我必须编写一个脚本,迭代地获取我的刀片的振荡周期,对应于其中的50个文件,对于这50个文件中的每个文件(时间步长),它必须导入CSV列中存在的信息并执行一些计算。在迭代结束时,周期必须向前移动一个时间步长(如果第一个周期的文件从0到98,那么第二个周期的文件必须从2到100,以此类推),循环必须重复。
我的教授给了我一些完全不相关的例子,我很难理解脚本的第一部分,即负责定义路径和导入数据的部分。
以下是一些片段:
清晰的所有
关闭所有
clc
bladestring = {“blade_1”};
叶片= 1;
path_csv = [path_write_csv' / pressure_export_blade_ 'bladestring{叶片}“_tstep_”num2str (tstep_vec (tstep)). csv”];
% importdata from .csv
iperiods = 1: nperiods
tstep = 1:5
%从文件中读取数据并转换为向量和矩阵
A_XYZ = importdata (path_csv、分隔符、headerlines);
CFX_Nodes (:,:, tstep iperiods) = A_XYZ.data (:, 1:3);
CFX_Pressure_mat (:, tstep iperiods) = A_XYZ.data (:, 5);
CFX_Normal_mat (:,:, tstep iperiods) = A_XYZ.data(:,七章);
CFX_Area_mat (:, tstep iperiods) = A_XYZ.data (:, 6);
CFX_Mesh_Velocity (:,:, tstep iperiods) = A_XYZ.data(:,十12);
CFX_Mesh_Disp (:,:, tstep iperiods) = A_XYZ.data (:, 13:15);
结束
结束
tstep_mat (:, tstep iperiods) = tstep * trnwrite *步伐;
%计算每个周期的功
work_cycle_X_time =(总和(CFX_Pressure_mat_time。* * CFX_Normal_X_time CFX_Velocity_X_time。* CFX_Area_mat_time));
work_cycle_Y_time =(总和(CFX_Pressure_mat_time。* * CFX_Normal_Y_time CFX_Velocity_Y_time。* CFX_Area_mat_time));
work_cycle_Z_time =(总和(CFX_Pressure_mat_time。* * CFX_Normal_Z_time CFX_Velocity_Z_time。* CFX_Area_mat_time));
work_cycle_time (:,:,:, iperiod) = work_cycle_X_time + work_cycle_Y_time + work_cycle_Z_time;
%集成timestep-wise
tstep_int = tstep_mat_time(1: 1)”;
叶片= 1:长度(STACst.blade_data_names)
work_cycle_X_int(:,叶片)= trapz (tstep_int, work_cycle_X_time(:,:,刀片),2);
work_cycle_Y_int(:,叶片)= trapz (tstep_int, work_cycle_Y_time(:,:,刀片),2);
work_cycle_Z_int(:,叶片)= trapz (tstep_int, work_cycle_Z_time(:,:,刀片),2);
结束
%和的工作为每个坐标方向
work_cycle_time_blades (:, iperiod) = work_cycle_X_int + work_cycle_Y_int + work_cycle_Z_int
感谢那些会帮助我的人!

接受的答案

阿布
阿布 2023年2月14日
编辑:阿布 2023年2月14日
你好,
我假设您有一个包含编号的工作目录 . csv 你想在MATLAB中导入和处理的文件。
可以通过转到文件夹并检索 . csv 文件。然后遍历这些数据以选择必要的数据并提取数据进行进一步处理。
这是一个示例代码,你可以参考:
将所有文件放入struct
Csv_files = dir(fullfile(“路径\ \文件夹”‘* . csv‘));
%存储在“Nf”中的文件计数
Nf = length(csv_files);
一次处理'N'个文件
N = 50;
我= 0:Nf-N
创建一个单元格数组'batchTable'来存储所有的表
batchTable = cell(1,N);
j = 0: n - 1
batchTable{j+1} = readtable([“file_”num2str (2 * (i + j)). csv”]);
结束
%将所有表添加到一个表中
vertcat (batchTable {}):
在batchTable上执行下面的批量操作
结束
如需进一步信息,请参阅以下文档页:

更多答案(0)

类别

了解更多编程帮助中心而且文件交换

2022世界杯八强谁会赢?


释放

R2022a

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

翻译的

Baidu
map