嗨,我对矩阵有问题..
我有许多行数不同但列数相同的 .txt 文件(1 列)
e.g. s1.txt = 1234 rows
s2.txt = 1200 rows
s2.txt = 1100 rows
我想合并这三个文件。因为它有不同的行..当我将它写入一个新文件时,我得到了这个错误=索引超出了矩阵尺寸。
我怎样才能解决这个问题?.
您可以简单地通过堆叠来组合三个矩阵:假设s1
, etc 是您读取的矩阵,您可以像这样创建一个新矩阵:
snew = [s1; s2; s3];
[]
如果您只需要执行一次,您也可以使用样式堆叠而不创建新的矩阵变量。
您提供的信息太少,无法准确诊断您的问题。也许您已将文件中的数据加载到工作区中的变量中。也许s1
有 1 列和 1234 行等。然后您可以将变量连接成一个列向量,如下所示:
totalVector = [s1; s2; s3];
并将其写入带有save()
语句的文件。
这有帮助吗?
让我假设这个问题与您的另一个问题有关,并且您希望按列组合这些矩阵,在具有较少数据的列中留下空值。
在这种情况下,这段代码应该可以工作:
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)
该代码假定您在每个文件中都有一列,否则它将不起作用。