Matlab 加载和打印csv文件
我是一个新的matlab用户,试图将我的145.csv文件加载到matlab中。这些文件的名称相似,都包含两列和3000行。我需要能够为每个文件分别使用第1列和第2列,并绘制它们(第2列对第1列)。 到目前为止,我尝试了以下方法(对于包含所有文件的文件夹): 我的x只有3000x2倍,但我需要三维空间…我不知道如何访问“direc”文件夹。我还尝试通过以下方式定义每个文件的第1列和第2列: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) 并对其
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结构的teni
不是标量。我在回答中给出的这一行是为了替换代码段的循环中的行,而不是整个循环。在循环内部,每次迭代时,i
正好是1到145之间的一个值,direc(i).name
应该只有一个csv文件名。对不起,如果这让人困惑的话。好的,很清楚。我以前确实试过这个。它总是给我一个错误:“???下标赋值维度不匹配。”我可能犯了一些非常基本的错误,只是无法找出它是什么…它再次只给我二维结果。
x(:,:,i) = csvread(direc(i).name,1);