首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Igor Pro 8,用于比较字符串的函数

Igor Pro 8,用于比较字符串的函数
EN

Stack Overflow用户
提问于 2020-05-29 10:19:29
回答 2查看 178关注 0票数 0

嗨,我对使用Igor Pro非常陌生。我正在寻找一些关于为任务编写过程的帮助。

我有4个wave,两个是文本wave,两个是数值wave(其中一个还没有数据)。我需要写一个函数来比较两个文本波,如果它们相等,让igor从其中一个数值波中提取数据,并将其放在正确的点上,以匹配它所耦合的文本波。

使其在视觉上具有概念性

代码语言:javascript
复制
twave1                           twave2

nwave1                           nwave2

twave1是所有同位素的列表,但它们没有顺序,而nwave1是它们相应的质量值。(都在table1上)

twave2是相同的同位素列表,但顺序正确(即1H,2H,3H,4H...3He,4He...ect),nwave2为空(都在table2上)

因此,我们的目标是创建一个函数,它将通过twave1和twave2进行排序,如果它们匹配,则将数据从nwave1提取到nwave2中,以便质量与table2上的正确同位素匹配。因此,table2将在正确的位置拥有正确排序的同位素,现在还有大量数据。

任何帮助都将不胜感激;这就是我到目前为止所得到的

代码语言:javascript
复制
function assignMEf()
    wave ME, ME_FRIB
    wave isotope_FRIB, isotope
    variable len = numpnts(ME)
    variable i, j
    variable ME_current, iso_current

    for(i=0; i<len; i+=1)
     ME_current = ME[i]
     iso_current = isotope[i]
   for(j=0; j<4254; j+=1)
    if(iso_current == isotope_frib[j])
        ME_frib = ME[i]
    endif
   endfor
  endfor

end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-30 13:17:06

如果我没记错的话,最后你想要的两个wave是isotopeME。您的代码已接近正常工作,但是当您声明一个文本波时,您需要使用/t标志来告诉Igor它是一个文本波。我进一步简化了代码:

代码语言:javascript
复制
function assignMEf()
    wave ME, ME_FRIB
    wave/t isotope, isotope_FRIB
    variable len = numpnts(ME)

    variable i, j

    for(i = 0; i < len; i += 1)
        for(j = 0; j < len; j += 1)
            if(stringmatch(isotope[i],isotope_frib[j]))
                ME[i] = ME_FRIB[j]
            endif
        endfor
    endfor
end

这段代码不是很健壮,但可以满足您的需要。

为了测试代码,下面是我的MWE:

代码语言:javascript
复制
•Make/O/N=(10) ME_FRIB = p
•Make/O/N=(10) ME = NaN
•Make/O/N=(10)/T isotope_FRIB = "iso" + num2str(10 - p)
•Duplicate/O isotope_FRIB,isotope
•Sort isotope,isotope
•Edit isotope_FRIB,ME_FRIB,isotope,ME
•assignmef()
票数 0
EN

Stack Overflow用户

发布于 2020-06-01 19:26:25

我不认为stringmatch是正确的选择。它使用通配符匹配,但是OP AFAIU想要匹配/不匹配,所以!cmpstr是更好的选择。

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

https://stackoverflow.com/questions/62077645

复制
相关文章

相似问题

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