Finding largest data from table

3 次查看(过去 30 天)
Lets say that I have a table containing three matricies of different lengths.
X1=[9 6 9 0;3 2 7 0];
X2=[0 2;4 0];
X3=[3 1 2; 8 9 7];
X=table(X1,X2,X3)
X = 2×3 table
X1 X2 X3 ________________ ______ ___________ 9 6 9 0 0 2 3 1 2 3 2 7 0 4 0 8 9 7
How can i I find the longest one? Is there a way to find more then one matrix of a specific lenght? Lets say the ones that are the longest.

采纳的回答

Chunru
Chunru 2021-11-15
编辑:Chunru 2021-11-15
X1=[9 6 9 0;3 2 7 0];
X2=[0 2;4 0];
X3=[3 1 2; 8 9 7];
X4 = X1;
X=table(X1,X2,X3,X4)
X = 2×4 table
X1 X2 X3 X4 ________________ ______ ___________ ________________ 9 6 9 0 0 2 3 1 2 9 6 9 0 3 2 7 0 4 0 8 9 7 3 2 7 0
len = table2array(varfun(@(x) size(x, 2), X));
% max will find 1 entry only
[lmax, idx] = max(len)
lmax = 4
idx = 1
% if you want multiple entries
idxall = find(len == lmax)
idxall = 1×2
1 4
  2 个评论
Seth Furman
Seth Furman 2021-11-16
编辑:Seth Furman 2021-11-16
The only thing I would add is that
@(x) size(x, 2)
ans = function_handle with value:
@(x)size(x,2)
can be replaced with
@width
ans = function_handle with value:
@width
since the width function returns the number of variables in a table or the number of columns in an array.
e.g.
X1 = [9 6 9 0;3 2 7 0];
X2 = [0 2;4 0];
X3 = [3 1 2; 8 9 7];
X4 = X1;
X = table(X1,X2,X3,X4)
X = 2×4 table
X1 X2 X3 X4 ________________ ______ ___________ ________________ 9 6 9 0 0 2 3 1 2 9 6 9 0 3 2 7 0 4 0 8 9 7 3 2 7 0
varfun(@width, X, "OutputFormat", "uniform")
ans = 1×4
4 2 3 4

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Performance and Memory 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by