【发布时间】:2013-05-09 15:36:30
【问题描述】:
在 MATLAB 中,我真的需要别人的专业知识。我有一个 csv 文件,如下所示(额外的空格只是为了使其可读):
State, Damage, Blizzards,
Texas, 2, 2,
Alabama, 1, 0,
Alabama, 0, 1,
Texas, 5, 3,
Montana, 0, 8,
Arizona, 0, 0,
Arizona, 0, 1,
Texas, 8, 5,
我已经应用了 textread 和 strcmpi。这是目标:我需要开发一个循环来获取每个单独的状态以及与状态相关的数据并将其绘制在一个图上,并为每个状态重复直到完成。所以对于循环一:阿拉巴马州有两个数据集,所以我需要提取和绘制这个。循环二:得克萨斯州有 3 个数据集,所以我需要提取和绘制这个数据集。并重复该过程,直到应用所有状态。
代码如下:
filename = 'datacollect.csv'
[State,Damage,Blizzards] = ...
textread(filename,'%s %d... %d','delimiter',',','headerlines',1);
index1 = strcmpi(State, 'Texas');
Damage = Damage(index1)
Blizzards = Blizzards(index1)
plot(Damage,Blizzards) %for Texas
试图让它成为一个循环,自动,所以我不必硬编码。
我真的需要一个解决方案——即使你不确定。
【问题讨论】:
-
包含数据集的文件的名称是什么?你卡在哪里了?
-
您是否已经将所有数据读入一个单元矩阵?
-
是的。我已经应用了文本阅读。 [状态,伤害,暴风雪] = textread ....等。然后我使用 strcmpi 来提取我想要的字符串。 index1 = strcmpi(暴雪,'蒙大拿')。我试图不对每个状态进行硬编码,而是制作一个循环。
-
发布您的代码。我建议你使用
state= unique(data(:,1)),然后遍历状态并使用ismember来查找行。 -
其实我认为Amro在这里的回答几乎可以完全解决你的问题:stackoverflow.com/questions/16437937/concatenate-every-n-th-row/…
标签: matlab loops csv cell import-from-csv