'fplot' 在 Matlab 中绘制隐藏参数图

问题描述 投票:0回答:2

这些代码是错误的:

    syms bt;    
    f=415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664
                fplot(@(bt) f,[0.01 1],'b')

但是这些代码是正确的:

    syms bt;   
    fplot(@(bt) 415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664,[0.01 1],'b')

它们不一样吗?

matlab
2个回答
4
投票
syms bt;    
f=415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664
fplot(@(bt) f,[0.01 1],'b')

这里的语法完全错误。

bt
传递给函数
f
作为参数,对于
syms
函数只需使用
subs

@(bt) f   --------> @(bt) subs(f)
syms bt;    
f=415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664
fplot(@(bt) subs(f),[0.01 1],'b')

正确语法:

  • 既然

    f
    已经是一个函数了,为什么要定义一个
    new function handle
    复制现有功能?

  • 有了

    fplot()
    就可以直接使用
    syms
    功能

syms bt;    
f=415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664
fplot(f,[0.01 1],'b')

2
投票

是的,它们是不同的。对于第一个代码:

f=415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664
fplot(@(bt) f,[0.01 1],'b')

f不知道什么是bt。这样,就会出现错误。在第二个代码中:

fplot(@(bt) 415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664,[0.01 1],'b'

bt 被表示为自变量。

如果您想使用第一个代码,您可以编码为:

f=@(bt)(415136356873531/(2251799813685248*bt) + 703048105211593/70368744177664)
fplot(@(bt) f(bt),[0.01 1],'b')

这样,bt就被表示为自变量。

© www.soinside.com 2019 - 2024. All rights reserved.