Plotting implicit functions via fimplicit

4 次查看(过去 30 天)
Hello,
I have the following anonymous function:
L = 5000;
F = 11500;
E = 70000;
cP = @(B,H)[H.*(B.^-1)-6, 6.*F.*L.*((B.*H.^2).^-1)-50,...
4.*F.*L.^3.*((E.*B.*H.^3).^-1)-12.7];
Now I want to plot each curve in the vector via
interval = [0 500 0 500];
fimplicit(cP,interval);
This does not work. I suppose fimplicit expects only one curve and could not handle the vector containig the curves.
So, how can I access the each curve, i.e H.*(B.^-1)-6=0, which are in the vector and pass it to fimplicit so that fimplicit can handle it?
Thanks in advance,
Michael

采纳的回答

Voss
Voss 2023-9-20
Apparently (this behavior appears to be undocumented), you can pass a cell array of function handles to fimplicit, as in:
L = 5000;
F = 11500;
E = 70000;
interval = [0 500 0 500];
% cP = @(B,H)[H.*(B.^-1)-6, 6.*F.*L.*((B.*H.^2).^-1)-50,...
% 4.*F.*L.^3.*((E.*B.*H.^3).^-1)-12.7];
cP = { ...
@(B,H)H.*(B.^-1)-6, ...
@(B,H)6.*F.*L.*((B.*H.^2).^-1)-50, ...
@(B,H)4.*F.*L.^3.*((E.*B.*H.^3).^-1)-12.7, ...
}
cP = 1×3 cell array
{@(B,H)H.*(B.^-1)-6} {@(B,H)6.*F.*L.*((B.*H.^2).^-1)-50} {@(B,H)4.*F.*L.^3.*((E.*B.*H.^3).^-1)-12.7}
figure
fimplicit(cP,interval);
Since it is undocumented, I don't which MATLAB versions support this, so you may have to use each one separately:
figure
for ii = 1:numel(cP)
fimplicit(cP{ii},interval);
hold on
end
  2 个评论
Michael Haag
Michael Haag 2023-9-20
编辑:Michael Haag 2023-9-20
@Voss: Perfect thank you, this helps!
Interesting that fimplicit accepts a cell array of function handles.
Voss
Voss 2023-9-20
编辑:Voss 2023-9-20
You're welcome!
Yeah, I was surprised to discover (accidentally, while writing my answer) that the cell array of function handles works. The documentation lists only a function handle as the supported class for the first input to fimplicit (no mention of cell arrays):

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by