我正在使用python从USB输入设备读取数据。我想知道是否有一种方法可以与MATLAB中的模型实时交换。我现在的做法是将读取的数据保存在一个.mat文件中,然后让模型从那里读取数据,这不是很直观。我使用的代码如下所示:
#Import the needed libraries
import usb.core,usb.util,sys,time
import sys
from array import *
import scipy.io
#find our device
dev = usb.core.find(idVendor=0x046d, idProduct=0xc29a)
# was it found?
if dev is None:
raise ValueError('Device not found')
# set the active configuration. With no arguments, the first
# configuration will be the active one
try:
dev.set_configuration()
#In the event of an error
except usb.core.USBError as e:
print('Cannot set configuration the device: %s' %str(e))
sys.exit()
# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
intf,
# match the first IN endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_IN)
#Initialising variables
#Databases for access in MATLAB
gas_pedal_data={}
brake_pedal_data={}
steering_wheel_bit5_data={}
steering_wheel_bit6_data={}
gas_pedal=[]
brake_pedal=[]
steering_wheel_bit5=[]
steering_wheel_bit6=[]
i=0
#Read data from the device as long as it is connected
while(dev!= None):
try:
#Read data
data = dev.read(ep.bEndpointAddress, ep.wMaxPacketSize,
timeout=1000)
gas_pedal.append(data[6])
gas_pedal_data['gas_pedal']=gas_pedal
scipy.io.savemat('test.mat',gas_pedal_data)
brake_pedal.append(data[7])
brake_pedal_data['brake_pedal']=brake_pedal
scipy.io.savemat('test.mat',brake_pedal_data)
steering_wheel_bit5.append(data[4])
steering_wheel_bit5_data['steering_wheel_bit5']=steering_wheel_bit5
scipy.io.savemat('test.mat',steering_wheel_bit5_data)
steering_wheel_bit6.append(data[5])
steering_wheel_bit6_data['steering_wheel_bit6']=steering_wheel_bit6
scipy.io.savemat('test.mat',steering_wheel_bit6_data)
except usb.core.USBError as e:
print("Error readin data: %s" %str(e))
time.sleep(5)
continue
你有几个选择。
由于matlab是单线程的,您的模型必须在设计时考虑到新数据的提供。当提供新数据时,您需要显式地触发模型来重新评估。
下面是MATLAB文档中的例子。我想在Python中用相同的结果生成相同的代码。我在其他文章中看到了三维数组如何为numpy数组(sub2ind)获得线性索引的例子,但我想要一个简单的二维数组的例子,如我所示。感谢回答代码!
本文向大家介绍python实现udp数据报传输的方法,包括了python实现udp数据报传输的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现UDP数据报传输的方法,非常具有实用价值。分享给大家供大家参考。具体方法分析如下: 服务端代码: 客户端代码: 结果:先运行服务端,然后运行客户端, 服务端打印出: 补充: socket.sendto(string[, flags
主要内容:示例,写到日记文件,将数据导出到具有低级I/O的文本数据文件MATLAB中的数据导出(或输出)可以理解为写入文件。 MATLAB允许在其他应用程序中使用读取ASCII文件的数据。 为此,MATLAB提供了几个数据导出选项。 可以创建以下类型的文件: 来自数组的矩形,有分隔符的ASCII数据文件。 日记(或日志)文件的按键和结果文本输出。 使用等低级函数的专用ASCII文件。 MEX文件访问写入特定文本文件格式的C/C++或Fortran例程。 除此之外,还
主要内容:示例 - 1,示例 - 2,示例 - 3,低级文件I/O,导入具有低级别I/O的文本数据文件,示例在MATLAB中导入数据意味着从外部文件加载数据。importdata函数允许加载不同格式的各种数据文件。它有以下五种形式 - 序号 函数 描述 1 从文件filename中将数据加载到数组A中。 2 从系统剪贴板而不是从文件加载数据。 3 解析作为在文件,文件名或剪贴板数据中的列分隔符。可以使用与上述语法中的任何输入参数。 4 从ASCII文件,文件名或剪贴板加载数据,从行头标题开始读取
主要内容:MATLAB数据类型,示例,数据类型转换,数据类型确定,示例MATLAB不需要任何类型声明或维度语句。当MATLAB遇到新的变量名称时,它将创建变量并分配适当的内存空间。 如果变量已经存在,则MATLAB将使用新内容替换原始内容,并在必要时分配新的存储空间。 例如, 上述语句创建一个名为的矩阵,并将值存储在其中。 MATLAB数据类型 MATLAB提供种基本数据类型。每种数据类型存储矩阵或数组形式的数据。矩阵或数组的最小值是到,并且是可以到任何大小的矩阵或
我正在尝试上传图像到firebase,以及其他字符串和双数据类型。 我现在正在考虑两个选项,一个是上载imageUrl到firebase实时数据库,当我检索它时,我将检索一个imageUrl并将其转换为图像。 谢谢你的帮助!我很感激。