从元胞数组中获取字符串作为 matlab 工作区中变量的名称

2023-12-19

我的实验中有大量 .csv 文件(200 多个),之前我一直在单独读取它们,对于数据处理的后续步骤来说,这是一项乏味的工作。

co_15 = csvread('CO_15K.csv',5,0);
co_25 = csvread('CO_25K.csv',5,0);
co2_15 = csvread('CO2_15K.csv',5,0);
co2_80 = csvread('CO2_80K.csv',5,0);
h2o_15 = csvread('H2O_15K.csv',1,0);
etc.....

所以我想在代码的开头创建一个像这样的单元格,然后创建一个自动读取它们的 for 循环。

input = {'co_15' 5;'co_25' 5;...
         'co2_15' 5; 'co2_80' 5;...
         'h2o_15' 1; 'h2o_140' 1;...
         'methanol_15' 5;'methanol_120' 5;'methanol_140' 5;...
         'ethanol_15' 5;'ethanol_80' 1;'ethanol_140' 5;...
         'co2_ethanol_15' 5 ;'co2_ethanol_80' 5;...
         'h2o_ethanol_15' 1 ;'h2o_ethanol_140' 1;...
         'methanol_ethanol_15' 5;'methanol_ethanol_120' 5;'methanol_ethanol_140' 5};

for n = 1:size(input,1)
    input{n,1} = csvread(strcat(input{n,1},'k.csv'),input{n,2},0);
end

此代码中的单元格有 19 行 2 列,行是所有文件,列将包含处理数据的参数。现在我找不到解决方案的问题是我的第一列是一个字符串名称,我希望该字符串名称是 csvread 写入数据的变量的名称,但我现在设置它的方式只是覆盖包含 csv 数据的单元格第一列中的字符串。为了更加明确,我希望我的 matlab 工作区在包含 csv 文件数据的第一列中包含带有字符串名称的变量。我该如何解决这个问题?


你不actually想做这个。Even the http://www.mathworks.com/help/matlab/matlab_prog/string-evaluation.html#bs7kmd5数学工作坊会告诉 http://blogs.mathworks.com/loren/2006/01/04/more-in-eval/ you 不要这样做 http://www.mathworks.com/help/matlab/ref/eval.html?searchHighlight=eval#moreabout。如果您尝试使用变量名称来跟踪像这样的相关数据,那么有always更好的数据结构来保存您的数据。

一种方法是使用元胞数组

data = cell(size(input(:,1)));
for n = 1:size(input,1)
    data{n} = csvread(strcat(input{n,1},'k.csv'),input{n,2},0);
end

另一个不错的选择是使用struct。你可以有一个struct具有与您的数据相对应的动态字段名称。

data = struct();
for n = 1:size(input,1)
    data.(input{n,1}) = csvread(strcat(input{n,1},'k.csv'),input{n,2},0);
end

或者实际上创建一个结构数组并保存名称and结构中的数据。

for n = 1:size(input, 1)
    data(n).name = input{n,1};
    data(n).data =  csvread(strcat(input{n,1},'k.csv'),input{n,2},0);
end

如果你绝对坚持这样做(再次强调,这非常重要)not推荐),那么你可以使用eval http://www.mathworks.com/help/matlab/ref/eval.html:

for n = 1:size(input, 1)
    data = csvread(strcat(input{n,1},'k.csv'),input{n,2},0);
    eval([input{n, 1}, '= data;']);
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从元胞数组中获取字符串作为 matlab 工作区中变量的名称 的相关文章

  • MATLAB 中的内存映射文件?

    我决定使用 memmapfile 因为我的数据 通常为 30Gb 到 60Gb 太大 无法放入计算机内存中 我的数据文件由两列数据组成 对应于两个传感器的输出 并且它们采用 bin 和 txt 格式 m memmapfile G E Str
  • 如何将 HTML 表格转换为 csv 格式?

    是否有 HTML 解析器或某些库可以自动将 HTML 表格转换为 CSV 数据行 Here is http www unix com shell programming scripting 45274 html table csv html
  • 如何使用神经网络保存 Sift 特征向量进行分类

    SIFT 特征的 Matlab 实现发现于http www cs ubc ca lowe keypoints http www cs ubc ca lowe keypoints 在 stackoverflow 的帮助下 我想将功能保存到 m
  • 在 python 2 或 python 3 中编写 csv 文件的便携式方法

    在我的 Windows 机器上 我通常在 python 2 中这样做来编写 csv 文件 import csv f open out csv wb cr csv writer f delimiter cr writerow a b c f
  • Rails csv 格式的原始查询,通过控制器返回

    我使用 Active Record 来获取我的故事 然后生成 CSV 这是在 Rails Cast 中完成的标准方法 但我有很多行 需要几分钟 我想如果我能让 posgresql 来做 csv 渲染 那么我可以节省一些时间 这是我现在所拥有
  • 在每次迭代中使用 for 循环的索引命名图像

    我正在使用 MATLAB 进行图像处理项目 我使用 for 循环在每次循环迭代时生成某种图像数据 图像大小不同 我的问题是如何阻止它在下一次迭代中覆盖图像 Img i j data 理想情况下我希望它有 Img 1 data for 1st
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • 如何将列表字典写入字符串而不是 CSV 文件?

    This 堆栈溢出问题 https stackoverflow com questions 37997085 how to write a dictionary of lists to a csv file将列表字典写入 CSV 文件的答案
  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl
  • 将 csv 中的选定列转换为字典

    我有一个名为 archive 的 csv 文件 它以读者身份打开 我希望创建一个字典 其值 k v 是由 row 0 row 2 row 7 对于 csv 文件中的每一行 必须有一种简单直接的方法可以将此 csv 转换为字典 其中k row
  • T-SQL 表名别名

    在我的 T SQL 脚本中 我多次引用相同的长表名称 我在不同的表上使用这个查询 有没有办法通过变量引用表名 如果是这样 我可以简单地在脚本将使用的顶部声明一个变量 只需设置值 我就可以在各种表上运行它 而无需在脚本中进行更改 有几个选择
  • 通过 Powershell 拆分 9 GB csv 文件时遇到问题

    我有一个大约 9 GB 的大型 csv 文件 在 Powershell 中 我需要将其拆分为 10 MB 的块 问题是我需要保持行完整 因此每个分割文件在一行的末尾结束 并在下一行的开头开始 由于文件太大 我需要一种拆分它的方法 该方法不会
  • 数据表下载 xls/csv 文件无法正常工作

    我想要 3 个按钮 下载 csv xls 和 pdf 文件 就我而言 当我单击下载 csv 文件按钮时 它会以 csv 文件扩展名保存 但当我打开它时 它是 excel 它不是逗号分隔的文件 PDF 下载按钮工作正常 xls 按钮不起作用
  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 读取r中不同目录中的多个文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想从不同的目录读取多个 csv 文件 然后将其放入单个数据框中 我有两种目录可供阅读 A LogIIS 文件夹01 文件 csv 在
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • Pandas Dataframe.to_csv 小数=',' 不起作用

    在 Python 中 我正在将 Pandas Dataframe 写入 csv 文件 并希望将小数分隔符更改为逗号 像这样 results to csv D Data Kaeashi BigData ProcessMining Voorbe
  • 将 Spark 数据帧写入 csv 文件时出现“调用 o58.csv 时发生错误”错误

    使用后df write csv尝试将我的 Spark 数据帧导出到 csv 文件中 我收到以下错误消息 AppData Local Programs Python Python39 lib site packages py4j protoc
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • matlab mex 文件和 C++ dll (Windows)

    我有一个带有 Test 类的 DLL 标题 class MY EXPORT Test public int doit const string str 和来源 int Test doit const string str return in

随机推荐