尝试在矩阵中连接具有特定后缀的不同文件,但总是获得一个包含唯一行的矩阵,其中包含最后一个文件的值。
例如
我有多个文件,如:
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
谢谢!
答案 0 :(得分:0)
您在每次迭代中都会覆盖变量 if (destinationNameArray == nil){
destinationNameArray = [String]()
}
,allCABLX
,allCABLY
和allCABCY
,因此在循环之后只有最后的值保留在那里。您需要将数据保存在循环内,以便以后能够访问它。
如果所有文件具有相同数量的条目,则可以通过连接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
来获取正常矩阵。