首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Igor64程序中将波形转换成函数

如何在Igor64程序中将波形转换成函数
EN

Stack Overflow用户
提问于 2020-07-23 11:06:10
回答 2查看 160关注 0票数 1

我用一些计算,写了一个用另一波做波的程序。程序如下:

代码语言:javascript
复制
Function elipticity_calculation(rotation, elipticity, energy, calculated_elipticity)
    Wave rotation, elipticity, energy
    String calculated_elipticity

    Wave lambda
    lambda = 1240/energy
    Wave KK
    KK = lambda*lambda
    Wave w
    w = 1 - 93.33/KK
    Wave Q
    Q = 1/(w*w*lambda*sqrt(1+135/w))
    Wave delta
    delta = (Q*1.6*100000+2)*pi/180

    Duplicate/O rotation, $calculated_elipticity
    WAVE wOut = $calculated_elipticity
    wOut = (elipticity-rotation*cos(delta)/sin(delta))
End

但是,当我将函数放在命令窗口(参见下面)时,它会给出一个语法错误:

期望的波名。

代码语言:javascript
复制
elipticity_calculation(wave1, wave2, wave3, "calculated_elipticity")

我哪里错了?

谢谢

编辑:

我也试过这个:

代码语言:javascript
复制
Function elipticity_calculation(rotation, elipticity, energy,     calculated_elipticity)
    Wave rotation, elipticity, energy
    String calculated_elipticity

    Make $"lambda"/WAVE=lambda;
    lambda = 1240/energy
    Make $"KK"/WAVE=KK;
    KK = lambda*lambda
    Make $"w"/WAVE=w;
    w = 1 - 93.0665/KK

    Make $"Q"/WAVE=Q;
    Q = 1/(w*w*lambda*sqrt(1+136.24/w))
    Make $"delta"/WAVE=delta;
    delta = (Q*1.69508759865*100000+2.884488929)*pi/180

    Duplicate/O rotation, $calculated_elipticity
   WAVE wOut  = $calculated_elipticity
   wOut = (elipticity-rotation*cos(delta))/sin(delta)
End

但是,这段代码为每个计算的点创建了新的波形,并且还创建了wOut为空的波形。

编辑:

我试过这个。然而。它不起作用:

代码语言:javascript
复制
Function elipticity_calculation(rotation, elipticity, energy, calculated_elipticity)
Wave rotation, elipticity, energy
String calculated_elipticity

Make/FREE lambda 
lambda = 1240/energy
Make/FREE KK
KK = lambda*lambda
Make/FREE w
w = 1 - 93.0665/KK
Make/FREE kve
kve = 1/(w*w*lambda*sqrt(1+136.24/w))
Make/FREE delta
delta = (kve*1.69508759865*100000+2.884488929)*pi/180

Duplicate/O rotation, $calculated_elipticity
Make wOut = (elipticity-rotation*cos(delta))/sin(delta)

End

在对波浪做了一些计算之后,可以重写它吗?就像Excel里一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-11 08:55:30

我在下面解决了这个问题:

代码语言:javascript
复制
Function elipticity_calculation(rotation, elipticity, energy, calculated_elipticity)

Wave rotation, elipticity, energy
String calculated_elipticity

Duplicate/O elipticity, $calculated_elipticity
Wave calc_elipticity = $calculated_elipticity

Duplicate/FREE energy, lambda
lambda = ...
Duplicate/FREE energy, KK
KK = ...
Duplicate/FREE energy, w
w = ...
Duplicate/FREE energy, Q_1
Q_1 = ...
Duplicate/FREE energy, delta
delta = ...


calc_elipticity = ((elipticity-rotation*cos(delta))/sin(delta))

End
票数 0
EN

Stack Overflow用户

发布于 2020-07-23 12:14:09

lambda/KK/w/Q/delta是否存在于当前的数据存储器中?

传递的waves wave1/wave2/wave3也需要存在于当前数据文件夹中。

您可以打开调试和调试错误,以便Igor Pro弹入调试器时发生错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63052791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档