If your importfile()
函数正常工作,以这种方式在每次 for 循环迭代时您将覆盖a
与最近导入的文件。您应该连接所有文件(即矩阵)。
矩阵串联可以按行(即水平串联)或按列(即垂直串联)完成。据我了解,您需要垂直串联才能生成一个具有 144 列和单个文件包含的行数的唯一矩阵。
因此,您应该按如下方式更改循环
myMatrix=[];
for fileNum=1:8;
startRow=1;
endRow=72;
filename
myMatrix=[myMatrix ; importfile(filename, startRow, endRow)];
end
垂直串联可以通过以下方式完成;
运算符,因此像这样的指令A=[B ; C]
将创建一个矩阵A
通过连接矩阵B
and C
。在你的情况下你初始化myMatrix
为空,然后您将垂直连接(以迭代方式)所有输出importfile()
,那是你的.tsv
files.
在循环结束时,myMatrix
应该有尺寸NxM
where M
是 144 并且N
是所有文件的行数总和 (8*72)。
Update
如果您必须显式地将文件名传递给importfile()
函数您可以创建一个字符串元胞数组,其中元胞的每个元素都是一个文件名。因此,在我们的例子中,元胞数组将类似于:
filenames={'filename1.tsv','filename2.tsv',...,'filename8.tsv'};
显然,您必须用正确的文件名替换单元格内的字符串,最后您可以稍微编辑循环,如下所示
myMatrix=[];
for fileNum=1:8;
startRow=1;
endRow=72;
myMatrix=[myMatrix ; importfile(filenames{i}, startRow, endRow)];
end
以这种方式,在每次循环迭代时,第 i 个文件名将作为输入给出importfile()
希望它能被加载。
为了让它发挥作用,你应该(让我们让事情变得简单)
- 放置你的Matlab脚本和明显的函数
importfile()
在包含 .tsv 文件的同一文件夹中
- 将所述文件夹设置为当前文件夹
或者,如果给定文件夹中有 .tsv 文件,而脚本在另一个文件夹中,则当前文件夹肯定是包含脚本和元胞数组内的文件名的文件夹filenames
必须包含整个路径,而不仅仅是正确的文件名。