Matlab 加载和打印csv文件

Matlab 加载和打印csv文件,matlab,csv,matlab-load,Matlab,Csv,Matlab Load,我是一个新的matlab用户,试图将我的145.csv文件加载到matlab中。这些文件的名称相似,都包含两列和3000行。我需要能够为每个文件分别使用第1列和第2列,并绘制它们(第2列对第1列)。 到目前为止,我尝试了以下方法(对于包含所有文件的文件夹): 我的x只有3000x2倍,但我需要三维空间…我不知道如何访问“direc”文件夹。我还尝试通过以下方式定义每个文件的第1列和第2列: time(i,:,:)=x(:,:,1) and signal(i,:,:)=x(:,:,2) 并对其

我是一个新的matlab用户,试图将我的145.csv文件加载到matlab中。这些文件的名称相似,都包含两列和3000行。我需要能够为每个文件分别使用第1列和第2列,并绘制它们(第2列对第1列)。 到目前为止,我尝试了以下方法(对于包含所有文件的文件夹):

我的x只有3000x2倍,但我需要三维空间…我不知道如何访问“direc”文件夹。我还尝试通过以下方式定义每个文件的第1列和第2列:

time(i,:,:)=x(:,:,1) and 
signal(i,:,:)=x(:,:,2)
并对其进行策划;但它只返回1个数据集(1文件)的绘图

有人能帮我吗?我希望我提供了所有必要的信息


谢谢

我不知道您所说的“如何访问'direc'文件夹”是什么意思(
direc
是一个结构数组,您已经按照预期通过
direc(index.fieldname
访问了它),但我认为主要的问题是在for循环中,每次迭代都会覆盖x之前的内容,因此,最终得到的是上次读取文件的内容

如果您所有的csv文件都具有完全相同的维度,那么您需要的似乎是

x(:,:,i) = csvread(direc(i).name,1);
然后,您可以通过
压缩(x(:,1,:)
)访问所有第一列-只有
x(:,1,:)
将返回大小为3000x145的三维数组(使用上面给出的数字),
压缩
将生成更方便的3000x145矩阵


如果不是所有csv文件都有相同的行数和列数,则需要使用单元格数组,并且不能使用方便的索引(顺便说一句:did
signal(i,:,:)=x(:,:,2)
真的可以处理二维x?),或者用零填充,这可能需要中间步骤来确定3D数组到底应该有多大。

Hi,非常感谢你的评论!看来循环才是真正的问题。但是现在,如果我尝试在没有循环的情况下执行此操作,它会给我错误消息“??使用==>csvread过多输入参数时出错。”但由于我没有真正定义任何内容,我想不出错误的代码……而且数据也很少。你又有主意了吗?你还在用csvread(direc(i).name,1)带有标量索引
i
?如果您只输入函数的参数(例如,在上述情况下为
direc(i).name,1
),而不输入
csvread
、括号和分号,那么输出是什么?然后我将获得files.csv的所有名称,因此145x1结构的ten
i
不是标量。我在回答中给出的这一行是为了替换代码段的
循环中的
行,而不是整个循环。在循环内部,每次迭代时,
i
正好是1到145之间的一个值,
direc(i).name
应该只有一个csv文件名。对不起,如果这让人困惑的话。好的,很清楚。我以前确实试过这个。它总是给我一个错误:“???下标赋值维度不匹配。”我可能犯了一些非常基本的错误,只是无法找出它是什么…它再次只给我二维结果。
x(:,:,i) = csvread(direc(i).name,1);