我可以在一个矩阵中输入多个列长度的数据吗?

35次观看(过去30天)
我试图从多个.txt文件导入数据,每个文件有两列,但每个文件有不同的和未知的行数。文件的数量也不同,每次我必须运行脚本,所以我想能够只是设置一个变量的文件的数量,然后导入循环内的数据:
我= 1:numSlugs
Slugfilename = strcat(filename, sluggarray (i),extension);
数据= importdata(slugfilename);
T (:,i) = data.data(:,1);
X (:,i) = data.data(:,1);
结束
错误:无法执行赋值,因为左边的大小是300 × 1,右边的大小是84 × 1。
TXT_to_Graph_Auto中的错误(第41行)
T (:,i) = data.data(:,1);
是否有一种方法,我可以使一个矩阵与不同大小的列或一种方法使用t = 0 (300,numslugs),因为每个文件将不会有超过300行?
编辑:我修正了它,我能够添加另一个for循环:
我= 1:numSlugs
Slugfilename = strcat(filename, sluggarray (i),extension);
数据= importdata(slugfilename);
[R,C] = size(data.data);
j = 1: R
T (j,i) = data.data(j,1);
X (j,i) = data.data(j,2);
结束
结束
这是有效的,并且在行数较少的列的其余行中有0作为填充符。

答案(2)

约翰D 'Errico
约翰D 'Errico 2022年2月26日
编辑:约翰D 'Errico 2022年2月26日
不。对不起,但是不行。矩阵不能有长度变化的列。MATLAB中的矩阵是标量元素的矩形数组。您可以定义自己的类来实现您想要的功能吗?啊。但,是的。
你能用一些非数字的东西填充较短的列吗,比如NaN?嗯,是的。只要你提前知道最长列的长度。但是在较短的列的末尾仍然会有垃圾。但为什么要这么麻烦呢?
你能做什么简单的事?最简单的方法是使用单元格数组。单元格数组的单元格可以是任何大小,因为它们可以存储任何东西。
帮助细胞
创建单元格数组。CELL(N)是一个空矩阵的N × N单元数组。CELL(M,N)或CELL([M,N])是空矩阵的M × N单元数组。细胞(M, N, P,…)或细胞([M N P…])是一种M-by-N-by-P-by -…空矩阵的单元格数组。CELL(SIZE(A))是一个与A大小相同的单元格数组,包含所有空矩阵。参见ONES, zero, STRUCT, DEAL, PAREN。其他函数命名为cell codistributed/cell codistributor2dbc/cell table/cell codistributor1d/cell distributed/cell

大卫Goodmanson
大卫Goodmanson 2022年2月26日
编辑:大卫Goodmanson 2022年2月26日
嗨布赖斯,
如果您像前面提到的那样预先分配,那么您可以用
T = 0 (300,numslugs);
X = 0 (300,numslugs);
U = 0 (1,numslugs);
I = 1:表示numslugs
(获取数据)
[nrow ncol] = size(data.data(:,1));
T (1:nrow,i) = data.data(:,1);
X (1:nrow,i) = data.data(:,2);<——not(:,1),它出现
U (i) = nrow;
结束
如果你想跟踪每行元素的数量,你可以把u加进去。

类别

找到更多资料矩阵索引帮助中心而且文件交换

s manbetx 845

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!