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일

1 개 추천

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
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

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

카테고리

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

질문:

2017년 5월 19일

댓글:

2017년 5월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by