嗨我有矩阵问题..
我有很多.txt文件,行数不同但列数相同(1列)
e.g. s1.txt = 1234 rows
s2.txt = 1200 rows
s2.txt = 1100 rows
我想要合并这三个文件。因为它有不同的行..当我把它写到一个新文件时,我得到这个错误=索引超过矩阵维度。
我怎么能解决这个问题? 。
答案 0 :(得分:2)
您可以简单地通过堆叠它们来组合三个矩阵:假设s1
等是您读入的矩阵,您可以创建一个这样的新矩阵:
snew = [s1; s2; s3];
如果您只需要执行一次,也可以使用[]
样式堆叠而不创建新的矩阵变量。
答案 1 :(得分:1)
您提供的信息太少,无法准确诊断您的问题。您可能已将文件中的数据加载到工作区中的变量中。也许s1
有1列和1234行等等。然后你可以将变量连接成一个列向量,如下所示:
totalVector = [s1; s2; s3];
并将其写入带有save()
语句的文件。
这有帮助吗?
答案 2 :(得分:0)
让我假设此问题与您的另一个question相关联,并且您希望按列合并这些矩阵,将空值留在数据较少的列中。
在这种情况下,此代码应该有效:
BaseFile ='s';
n=3;
A = cell(1,n);
for k=1:n
A{k} = dlmread([BaseFile num2str(k) '.txt']);
end
% create cell array with maximum number of rows and n number of columns
B = cell(max(cellfun(@numel,A)),n);
% convert each matrix in A to cell array and store in B
for k=1:n
B(1:numel(A{k}),k) = num2cell(A{k});
end
% save the data
xlswrite('output.txt',B)
代码假设您在每个文件中都有一列,否则它将无效。