Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Convert matrix to Uitable

Asked by Light on 8 Jun 2013

A matrix is here

U(35)=9;
U(44)=29;
A=[-1,1,1;0,-1,0;0,0,-1;1,0,0];
blnA = logical( A == -1 );
blnOut = find(any(A == -1,2));
max(blnOut);
negcolumn = find(A(max(blnOut),:) == -1);
onerow = find(A(:,negcolumn) == 1);
And i just wanna convert that matrix to uitable. Because i need a given row name and column name. 
f = figure('Position',[10 10 600 600]);
dat = {-1,1,1;0,-1,0;0,0,-1;1,0,0};
cnames = {'18','29','51'};
rnames = {'12','26','35','44'};
t = uitable('Parent',f,'Data',dat,'ColumnName',cnames,... 
            'RowName',rnames,'Position',[10 10 590 590]);
max(blnOut)
ans =
       3

My expected result is 35.

And will use that value 35 like that

U(ans)=?
U(35)
ans = 
     9

If i solve it, My whole calculation will be perfect. Please give me your hand

1 Comment

Image Analyst on 8 Jun 2013

Why give you a hand here rather than the thousand of other posts on this question that you've posted?

Light

Tags

Products

No products are associated with this question.

1 Answer

Answer by Image Analyst on 8 Jun 2013
Accepted answer

This will do it:

U(35)=9;
U(44)=29;
A=[-1,1,1;0,-1,0;0,0,-1;1,0,0];
blnA = sum( A == -1, 2 )
lastRow = find(blnA, 1, 'last')
f = figure('Position',[10 10 600 600]);
dat = {-1,1,1;0,-1,0;0,0,-1;1,0,0}
columnHeaders = {'18','29','51'};
rowHeaders = {'12','26','35','44'};
t = uitable('Parent',f,'Data',dat,'ColumnName',columnHeaders,... 
            'RowName',rowHeaders,'Position',[10 10 590 590]);
theAnswer = str2double(rowHeaders{lastRow})
% Get that number from U:
finalAnswer = U(theAnswer)

2 Comments

Walter Roberson on 8 Jun 2013

Though if you are going to do that, why not just use numeric column names and row names?

columnHeaders = {18,29,51};
rowHeaders = {12,26,35,44};

and then

theAnswer = rowHeaders{lastRow};
Image Analyst on 9 Jun 2013

Yes, that's best, and what I suggested in my other answer in one of Light's duplicate questions (that I didn't delete). The whole intent of the code is just an incomprehensible mess to me - I have no idea what Light wants, and consequently can't suggest a good approach.

Image Analyst

Contact us