1

嗨,我对矩阵有问题..

我有许多行数不同但列数相同的 .txt 文件(1 列)

e.g. s1.txt = 1234 rows
     s2.txt = 1200 rows
     s2.txt = 1100 rows

我想合并这三个文件。因为它有不同的行..当我将它写入一个新文件时,我得到了这个错误=索引超出了矩阵尺寸。

我怎样才能解决这个问题?.

4

3 回答 3

2

您可以简单地通过堆叠来组合三个矩阵:假设s1, etc 是您读取的矩阵,您可以像这样创建一个新矩阵:

snew = [s1; s2; s3];

[]如果您只需要执行一次,您也可以使用样式堆叠而不创建新的矩阵变量。

于 2010-06-03T14:29:39.530 回答
1

您提供的信息太少,无法准确诊断您的问题。也许您已将文件中的数据加载到工作区中的变量中。也许s1有 1 列和 1234 行等。然后您可以将变量连接成一个列向量,如下所示:

totalVector = [s1; s2; s3];

并将其写入带有save()语句的文件。

这有帮助吗?

于 2010-06-03T14:30:45.827 回答
0

让我假设这个问题与您的另一个问题有关,并且您希望按列组合这些矩阵,在具有较少数据的列中留下空值。

在这种情况下,这段代码应该可以工作:

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)

该代码假定您在每个文件中都有一列,否则它将不起作用。

于 2010-06-03T16:28:30.310 回答