How to write a function that generates a hyperlink that runs a function?
2 次查看(过去 30 天)
显示 更早的评论
I'm looking for a way to run a random function with input arguments by clicking a hyperlink in the command window.
In my case, I wrote some functions (Riemann method, Trapezoidal Rule, etc.) to approximate the value of definite integrals. They all have f, a, b and n as input arguments, where f is a function implemented with the syms operator (e.g. f(x)=x^2), a and b are the bounders and n is the amount of intervals. I would now like to 'collect' all these functions in one new function, named integral with the same input arguments, that displays a hyperlink in the command window for each 'integrate function'. So, when one clicks such a hyperlink, the corresponding function is runned. I tried:
function [ ] = integral( f,a,b,n )
disp('<matlab:riemann(f,a,b,n) Riemann>')
disp('<matlab:trapezoid(f,a,b,n) Trapezoid>')
...
end
This doesn't work however, because the f, a, b and n in the display apparently aren't defined.
Is there a way to achieve my goal? Alternatives like pop-up windows and buttons instead of hyperlinks are welcome aswell.
Thanks in advance!
0 个评论
采纳的回答
Walter Roberson
2013-3-30
fprintf('<matlab:plus(%d,%d) Sum>\n', a, b)
Note change from sum() to plus() -- unless, that is, you want "b" to be the dimension over which to sum the array "a"
3 个评论
Walter Roberson
2013-3-30
编辑:Walter Roberson
2013-3-30
For your expanded question:
function [ ] = Link_integral( f,a,b,n )
fstr = ['@(x) ' char(f)];
intargs = sprintf('(%s,%g,%g,%d)', fstr, a, b, n);
fprintf('<matlab:riemann%s Riemann>\n', intargs);
fprintf('<matlab:trapezoid%s Trapezoid>\n', intargs);
end
The function would be slightly different if you want the symbolic form to continue to be received as symbolic:
fstr = ['sym(''' char(f) ''')'];
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!