Handling UITable Cell Array

조회 수: 3 (최근 30일)
Samer El Zahab
Samer El Zahab 2017년 5월 19일
댓글: Walter Roberson 2017년 5월 19일
Hello Matlab Community,
I am trying to code the GUI for my thesis,
I used UITable, in the table I input the initial condition which is a value always, and the next column is the deterioration equation in time. Example equations: e^t, sin(t), t^2 - 2t, t and so on.
I would like to be able to create an array of equations using the the approach t0 + f(t), but UITable stores the data in cell format and thus my question is, how can I convert the data in order to utilize them effectively as equations in matlab.

답변 (1개)

Walter Roberson
Walter Roberson 2017년 5월 19일
편집: Walter Roberson 2017년 5월 19일
In a situation like that, you would probably get() the Data property of the uitable, and then for each position where an equation was expected, using {} indexing to extract the string stored there. Then you would probably use str2func() to turn the expression into a function handle that you could execute. If you have the symbolic toolbox it can make sense sometimes to sym() the string instead of str2func() -- though using sym() for that is likely to generate a warning these days.
  댓글 수: 2
Samer El Zahab
Samer El Zahab 2017년 5월 19일
편집: Walter Roberson 2017년 5월 19일
I tried your approach, but I am struggling with str2func(). completeData is the data collected from the gui, I isolated the cell columns with equations, yet for some reason I am unable to convert them to functions. The code is as follows:
functionA = completeData(:,3);
functionB = completeData(:,5);
n = size(functionA,1); %Determine total count of Data
equationsA=[];
equationsB=[];
for i = 1:1:n
equationsA = [equationsA; sym((functionA(i,1)))];
equationsB = [equationsB; sym((functionB(i,1)))];
end
Walter Roberson
Walter Roberson 2017년 5월 19일
You can replace the above with
equationsA = sym( completeData(:,3) );
equationsB = sym( completeData(:,5) );
Note that the results will be a vector of symbolic expressions, not functions. If you want symbolic functions, then
equation_vars = [x, y];
equationsA = cellfun(@(F) symfun(sym(F), equation_vars), completeData(:,3), 'Uniform', 0);
equationsB = cellfun(@(F) symfun(sym(F), equation_vars), completeData(:,5), 'Uniform', 0);
This would give you a cell array of symbolic functions. You need to store them in a cell array in order to access them individually
equationsA{1}(pi, 19) %for example

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

카테고리

Help CenterFile Exchange에서 Symbolic Math Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by