【MATLAB实例】批量提取.csv数据并根据变量名筛选
- 准备:数据说明
- MATLAB批量提取
- 参考
准备:数据说明
.csv数据如下:
打开某表格数据,如下:(需要说明的是此数据含表头)
需求说明:需要提取指定站点名对应数据
MATLAB批量提取
数据导入方法: 根据不同 .csv 文件内容,可能需要使用 readtable、readmatrix 或 csvread 等不同的函数来读取数据。如果你的文件有表头,推荐使用 readtable。
代码如下:
clear
clc
close all
%% 提取站点信息(StationID)
StationID = [59271 59278 59478 59485 59287 59294 59289 59488 59298];
nStation = length(StationID);
%% Tmax
% 指定存放.csv文件的文件夹路径(替换为你的文件夹路径)
folderPath = 'D:\0 DataBase\0 GBA Database\1 Meteorological_Station_Data\2020_Daily Tmax';
% 获取该文件夹下所有的.csv文件
filePattern = fullfile(folderPath, '*.csv');
csvFiles = dir(filePattern);
nDay = length(csvFiles);
% 初始化一个结构数组来存储提取的数据
Tmax2020 = zeros(nDay,nStation);
% 循环遍历每一个.csv文件
for k = 1:length(csvFiles)
% 构建完整的文件名
baseFileName = csvFiles(k).name;
fullFileName = fullfile(folderPath, baseFileName);
% 导入CSV数据:请根据实际情况选择合适的方法导入数据
% 数据有表头,使用 readtable 导入数据
data = readtable(fullFileName);
Name = data.('name' ); % 使用动态字段名提取
Ta = data.('Ta_DegC_');
% 将数据存储到Tmax变量中
for idata=1:height(data)
for iStation=1:nStation
% 提取所需站点数据
if strcmp( Name{idata,1} , num2str( StationID(iStation)) )
if iscell(Ta)
Tmax2020(k, iStation) = str2num( Ta{idata,1});
elseif isnumeric(Ta)
Tmax2020(k, iStation) = Ta(idata,1);
end
end
end
end
end
数据提取完成后,保存在Tmax2020变量中。