【问题标题】:Creating variables with numbers from filename从文件名创建带有数字的变量
【发布时间】:2013-11-01 18:55:26
【问题描述】:

我有一个充满 xls 文件的文件夹,名为 data_00001 到 data_10000。每个文件都有十几个相同名称的选项卡,里面装满了 RV。我有兴趣阅读所有文件和选项卡并创建 RV 的直方图。

有没有办法读取文件名的最后 5 位数字并将它们附加到每个选项卡名称(我将其保存为变量)?

我使用regexp 将数字提取为字符串并将其转换为双精度数,并使用for 循环保存变量X{1,k}。如何将保存的双精度数据合并到这个变量中?

【问题讨论】:

  • 请发布您的代码的相关部分。这样你会得到更多的帮助
  • 为什么要将数字并入变量名?索引变量更容易操作。
  • 同意,应该鼓励用户使用索引单元格。
  • 我想将数字合并到变量中以轻松识别数据集,因为文件编号并不总是按顺序排列。
  • 到目前为止我有:> myFolder = 'Z:\MyFiles\'; filePattern = fullfile(myFolder, '.xls'); xlsFiles = 目录(文件模式);对于 k = 1:length(xlsFiles) baseFileName = xlsFiles(k).name; fullFileName = fullfile(myFolder, baseFileName); fprintf('正在读取 %s\n', fullFileName); Output_Data{k} = importdata(fullFileName); end > for i = 1: numel(xlsFiles) Digits = regexp(xlsFiles(i).name, 'Filename_(\d).xls', 'tokens');数字=数字{1}; Number(i) = str2double(Digits);结束——

标签: matlab loops for-loop numbers extract


【解决方案1】:

你在寻找这样的东西吗?

filenames = ['data_00001','data_10000'];
nums = regexp(filenames, '[0-9]+', 'match');
tag = 'TAG';
for i=1:size(nums,2)
  eval(['A_' tag '_' sprintf("%s",nums{1,i}) ' = zeros(1)']);
end

它使用变量名创建矩阵(在这种情况下为零)

A_TAG_00001 = 0
A_TAG_10000 = 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多