How to construct a table with several matrices
조회 수: 10 (최근 30일)
이전 댓글 표시
Hi.
Is is possible to construct a table in MATLAB that contains four matrices? That is, if I were to have four matrices:
Sigma1 = [1 0.5; 0.5 1];
Sigma2 = [1 -0.5; -0.5 1];
Sigma3 = [0.4 1; 8.0 2.0];
Sigma4 = [8.0 2; 0.2 0.1];
Could I put this into a table that has two ColumnName and two RowName, but each "value "in the table is one Sigma matrix? Can you please help me?
댓글 수: 0
채택된 답변
Matt Fig
2012년 9월 26일
편집: Matt Fig
2012년 9월 26일
The closest you can come is to put each element of each Sigma into the items in a popup.
Sigma1 = [1 0.5; 0.5 1];
Sigma2 = [1 -0.5; -0.5 1];
Sigma3 = [0.4 1; 8.0 2.0];
Sigma4 = [8.0 2; 0.2 0.1];
S1 = arrayfun(@(x) sprintf('%2.2f',x),Sigma1,'Un',0);
S2 = arrayfun(@(x) sprintf('%2.2f',x),Sigma2,'Un',0);
S3 = arrayfun(@(x) sprintf('%2.2f',x),Sigma3,'Un',0);
S4 = arrayfun(@(x) sprintf('%2.2f',x),Sigma4,'Un',0);
fh = figure('Position',[100 100 400 150],'menu','none');
dat = { S1{1},S2{1},S3{1},S4{1}};
columnname = {'Sigma1','Sigma2','Sigma3','Sigma4'};
columnformat = {S1(:).',S2(:).',S3(:).',S4(:).'};
columneditable = [true,true,true,true];
t = uitable(fh,'Units','pix','Position',...
[10 10 380 130], 'Data', dat,...
'ColumnName', columnname,...
'ColumnFormat', columnformat,...
'ColumnEditable', columneditable,...
'RowName',[]);
추가 답변 (4개)
Azzi Abdelmalek
2012년 9월 26일
편집: Azzi Abdelmalek
2012년 9월 26일
A={sigma1,sigma2;sigma3,sigma4}
댓글 수: 2
Image Analyst
2012년 9월 26일
Well, in your original post you said "table" and that is kind of ambiguous. A table could be a cell array/matrix, like Azzi (and I) initially thought, or it could be a uitable like you've now clarified in your comments. See my answer regarding uitable.
Thomas
2012년 9월 26일
Or you could form a 3D matrix; where each 3rd dimension is an individual Sigma matrix
Sigma1 = [1 0.5; 0.5 1];
Sigma2 = [1 -0.5; -0.5 1];
Sigma3 = [0.4 1; 8 2];
Sigma4 = [8 2; 0.2 0.1];
Sigma(:,:,1)=Sigma1;
Sigma(:,:,2)=Sigma2;
Sigma(:,:,3)=Sigma3;
Sigma(:,:,4)=Sigma4;
Sigma
Babak
2012년 9월 26일
mytable=cell(2,2);
mytable{1,1}=[1 0.5; 0.5 1];
mytable{1,2}=[1 -0.5; -0.5 1];
mytable{2,1}=[0.4 1; 8.0 2.0];
mytable{2,2}=[8.0 2; 0.2 0.1];
mytable % display it
댓글 수: 2
Image Analyst
2012년 9월 26일
Babak - see her response to Tom. The "table" she wants is a uitable, not a cell array.
Image Analyst
2012년 9월 26일
I'm pretty sure you can't have a 2 by 2 array in one "cell" (here I'm using Excel's definition of cell, not MATLAB's definition of cell) of a uitable. The cells in a uitable can only be single numbers or strings.
As a workaround, you can have a blank (empty) separator column or row in between a 2 by 2 block of cells by putting in null for those rows or columns that you want blank. This will give the appearance of having those 2x2 arrays of numbers separated from each other.
참고 항목
카테고리
Help Center 및 File Exchange에서 Dialog Boxes에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!