错误同时导入多个文件

时间:2016-02-20 08:20:12

标签: matlab

尝试在矩阵中连接具有特定后缀的不同文件,但总是获得一个包含唯一行的矩阵,其中包含最后一个文件的值。

例如

我有多个文件,如:

2302_Cabeza_L_x.txt, 2202_Cabeza_L_x.txt, 1702_Cabeza_L_y.txt..... 

我正在使用的代码......

codes= [2302,2202,1602,1502,1702];

for p=1:length(codes)

name=mat2str(codes(:,p));

    orden2=(name(2:length(name)-11));
    orden=str2num(orden2);

allCABLX = importdata([name '_Cabeza_L_x.txt']);
allCABLY = importdata([name '_Cabeza_L_y.txt']);
allCABCY = importdata([name '_Cabeza_C_y.txt']);
allCABCX = importdata([name '_Cabeza_C_x.txt']);
end

谢谢!

1 个答案:

答案 0 :(得分:0)

您在每次迭代中都会覆盖变量 if (destinationNameArray == nil){ destinationNameArray = [String]() } allCABLXallCABLYallCABCY,因此在循环之后只有最后的值保留在那里。您需要将数据保存在循环内,以便以后能够访问它。

如果所有文件具有相同数量的条目,则可以通过连接allCABCX获得的值来实现。由于我不知道importdata输出的维度,我不会在这里详述。

如果文件具有不同的条目数,则可以使用单元格数组来存储每次迭代的数据。这也适用于所有条目大小相同的情况。以下代码对其中一个变量执行此操作:

importdata

请注意,我将codes= [2302,2202,1602,1502,1702]; allCABLX = cell(length(codes),1); % create empty cell array for p=1:length(codes) name=num2str(codes(:,p)); allCABLX{p} = importdata([name '_Cabeza_L_x.txt']); end 替换为mat2str,因为您只有一个要转换的数字,而不是整个矩阵。如果所有文件都具有相同维度的数据,您可以在循环后使用num2str来获取正常矩阵。