Как посчитать количество знаков после запятой в списке значений в Igor Pro
Я использую Igor Pro (не часто). Я пытаюсь подсчитать количество знаков после запятой, если она есть, для одной волны. А затем добавьте десятичный знак, сколько бы разрядов слева, которые были в первой волне, во вторую волну. Для справки я приложил фото того, что у меня сейчас есть. Волна «test_correct» ДОЛЖНА выглядеть, а «fix_err» - это то, что я сейчас выводю. Я занимаюсь этим некоторое время, но, похоже, не могу понять этого, любая помощь будет оценена. благодарностиПример
Function testErrFix()
wave test_energy, test_err
variable i, j, s
variable len = numpnts(test_energy)
make/O/D/N=(len) fix_err
string current_Energy
string current_Err
string Error
variable slen
For(i=0;i<len;i+=1)
current_Energy = num2str(test_energy[i])
current_Err = num2str(test_err[i])
slen = strlen(current_energy)
Error = ""
For(j=0;j<slen;j+=1)
If(Stringmatch(current_Energy[j], ".")==1)
For(s=j;s<slen;s+=1)
Error += "." + current_Err[s-4] + current_Err[s-3] + current_Err[s-2]
EndFor
ElseIf(Stringmatch(current_Energy[j], "")==1)
Error += current_Err[s+1]
For(s=j;s<slen;s+=1)
Error = current_Err[s]
EndFor
EndIf
EndFor
fix_err[i] = str2num(Error)
EndFor
End
1 ответ
В вашем примере неправильно используется num2str. По умолчанию это возвращает только 5 десятичных знаков, см. Его документацию. Вы также можете настроить количество цифр в таблице.
Не могли бы вы подробно рассказать, чего хотите достичь? У меня никогда не было необходимости знать количество цифр справа от десятичной точки.