matlab “fplot”不能接受隐藏参数

lnxxn5zx  于 2023-11-21  发布在  Matlab
关注(0)|答案(2)|浏览(267)

这些代码是错误的:

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


它们不一样吗?

b4wnujal

b4wnujal1#

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

x759pob2

x759pob22#

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

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被表示为自变量。

相关问题