MATLAB - 索引超出矩阵维度

时间:2010-06-03 14:26:35

标签: matlab matrix rows

嗨我有矩阵问题..

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

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

我想要合并这三个文件。因为它有不同的行..当我把它写到一个新文件时,我得到这个错误=索引超过矩阵维度。

我怎么能解决这个问题? 。

3 个答案:

答案 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)

代码假设您在每个文件中都有一列,否则它将无效。