Handling UITable Cell Array
9 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
回答(1 个)
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 个评论
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 Center 和 File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!