Input Lua:将userdata读取为数字/将userdata与数字进行比较

Input Lua:将userdata读取为数字/将userdata与数字进行比较,input,lua,torch,matio,Input,Lua,Torch,Matio,我试图从文件中导入数字,并在它们处于某个特定值时进行更改。我使用torch从手势获取值,并将其从101更改为10,或者如果输入是相应的数字(10或9),则从100更改为9。不幸的是,我发现在Lua中,输入的类型是userdata,不能转换为整数,也不能与整数或torch张量进行比较 所以我的问题是:如果输入类型是userdata,如何检查数字的相等性 是否有可能将输入转换为数字,以便进行比较 gesture = matio.load(val, 'gesture') print(type(ges

我试图从文件中导入数字,并在它们处于某个特定值时进行更改。我使用torch从
手势
获取值,并将其从
101
更改为
10
,或者如果输入是相应的数字(10或9),则从
100
更改为
9
。不幸的是,我发现在Lua中,输入的类型是
userdata
,不能转换为整数,也不能与整数或torch张量进行比较

所以我的问题是:如果输入类型是
userdata
,如何检查数字的相等性

是否有可能将输入转换为数字,以便进行比较

gesture = matio.load(val, 'gesture')

print(type(gesture)) --prints `userdata`
print(gesture)       --prints 10 (for example)
if gesture == th.FloatTensor({101}) then
    gesture = th.FloatTensor({10})
    print("101 Detected! New value is: ")
    print(gesture)
    os.exit(0)
elseif gesture == th.FloatTensor({100}) then
    gesture = th.FloatTensor({9})
    print("100 Detected! New value is: ")
    print(gesture)
    os.exit(0)
end

这是一个相当复杂的问题,经过艰苦的测试后,我找到了一种将userdata数字与整数进行比较的方法

print(type(gesture)) -> prints `userdata`
print(gesture) -> 10
gesture_str = tostring(gesture)
print(type(gesture_str)) -> prints `string`
gesture_int = tonumber(gesture_str)
print(type(gesture_int)) -> prints `number`
单线解决方案如下所示

gesture_int = tonumber(tostring(gesture))

这个新变量将userdata数字存储为整数。

找到了一种更简单的方法

print(type(gesture)) -> prints `userdata`
print(gesture) -> 10
gesture_str = tostring(gesture)
print(type(gesture_str)) -> prints `string`
gesture_int = tonumber(gesture_str)
print(type(gesture_int)) -> prints `number`
    local gesture_int = gesture:uint()

假设userdata有成员函数,对吗?这些成员中有一个没有生成整数吗?@Nicolas非常感谢您的快速评论!:)我以前搜索过
lua userdata成员函数
,但没有看到任何有用的。。。你能告诉我什么链接吗?你误解了。该用户数据来自某个C API。您应该查看该API的文档,以了解如何使用该用户数据。用户数据没有单一的API。每个C API都为其不同的userdata对象公开了不同的函数。@Nicolas,因此我能够识别成员函数,并测试了一些函数,但是像
eq
这样的函数似乎只比较对象引用和那些似乎合适的引用(从名称上看)不工作。请在此处查找MATIO的最新版本及其文档: