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.

댓글 수: 1

Chunru
Chunru 2021년 11월 15일
Show what the data you have by giving a minimum example.

댓글을 달려면 로그인하십시오.

 채택된 답변

Chunru
Chunru 2021년 11월 15일
편집: Chunru 2021년 11월 15일

0 개 추천

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

Sebastian Daneli
Sebastian Daneli 2021년 11월 15일
Thx
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개)

카테고리

도움말 센터File Exchange에서 Tables에 대해 자세히 알아보기

태그

질문:

2021년 11월 15일

편집:

2021년 11월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by