繁体   English   中英

MATLAB-索引超出矩阵尺寸

[英]MATLAB - Index exceeds matrix dimensions

嗨,我有矩阵问题。

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

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

我想合并这三个文件。 由于它具有不同的行..当我将其写入新文件时,出现此错误=索引超出矩阵尺寸。

我该如何解决这个问题?

您可以简单地通过堆叠将三个矩阵组合在一起:假设s1等是您读入的矩阵,则可以像这样创建一个新矩阵:

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)

该代码假定每个文件中都有一列,否则将无法工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM