Matlab 想从TCP数据包中省略一些值吗
我已经成功地创建了processing和matlab之间的tcp连接。我正在使用oscp5库来实现这一点。我正在发送一个包含3个浮点值的数组 但是在Matlab中,我得到了5个额外的值。请告知我如何省略这些值 请注意,我不能使用其他库 另外,有人建议我,在创建消息时,我给它指定了一个标签“/测试”。当matlab的服务器收到消息时,它将读取该消息以及oscP5汇编的包中的数据。所以,我必须教matlab如何解释这些数据。因此,我需要访问oscP5网站,查看java文档和源代码,以了解打包格式。这里是链接 您可以看到下面的代码Matlab 想从TCP数据包中省略一些值吗,matlab,tcp,processing,Matlab,Tcp,Processing,我已经成功地创建了processing和matlab之间的tcp连接。我正在使用oscp5库来实现这一点。我正在发送一个包含3个浮点值的数组 但是在Matlab中,我得到了5个额外的值。请告知我如何省略这些值 请注意,我不能使用其他库 另外,有人建议我,在创建消息时,我给它指定了一个标签“/测试”。当matlab的服务器收到消息时,它将读取该消息以及oscP5汇编的包中的数据。所以,我必须教matlab如何解释这些数据。因此,我需要访问oscP5网站,查看java文档和源代码,以了解打包格式。这
-------------Processing Code-------------
import oscP5.*;
import netP5.*;
OscMessage myMessage;
OscP5 oscP5tcpClient;
void setup() {
size(640, 360);
oscP5tcpClient = new OscP5( this, "141.44.219.204", 1234, OscP5.TCP);
}
void draw() {
background(255);
OscMessage myMessage = new OscMessage("test\");
myMessage.add(new float[] {123.2, 134.5, 52.5}); ==>> Sent Message
oscP5tcpClient.send(myMessage);
print(50+sin(a)*40.0);
}
-----------------------------------------------------------------
--------------------------MATLAB Code----------------------------
>> tcpipServer = tcpip('141.44.219.161',1234,'NetworkRole','Server');
>> fopen(tcpipServer)
>> data = fread(tcpipServer, 8 , 'float32')
data =
0 ===>> want to omit
0.0000 ===>> want to omit
0 ===>> want to omit
123.2000
134.5000
52.5000
0.0000 ===>> want to omit
0 ===>> want to omit
>>
-----------------------------------------------------------------
您发送的确切值是多少?你得到的确切数值是多少?如果总是相同的附加值,你就不能自己跳过它们吗?不确定是否相关,但matlab文档建议,如果你想收集到“单个”精度变量,可以使用
'float32=>float32'
而不是'float32'
。另外,我肯定是这样的,但是您确定您的机器中的java浮点是32位吗?(我认为情况并非如此,因此您可以检查)。此外,是的,打印myMessage
在java中给出了什么,以及fread(tcpipServer,'char=>char')
在matlab中给出了什么?(即,我想知道您的数据是否带有某种标题?@tasospapstyllanou….'float32=>float32'在fread()中不是有效的精度。[请共享您阅读过的链接,可能我缺少该链接]。另外,对于字符,matlab有fscanf(),但不确定。@KevinWorkman…我的实际意图是通过matlab处理和接收连续发送x和y坐标。但问题是我也得到了oscp5数据包标签(这是显而易见的)。我只是在寻找一种方法,我可以删除这个标签在第一位(我不知道如何),并将获得相关的数据只。是的,你是对的,在matlab中接收到全部数据后,我可以自己移除标签。你发送的确切值是多少?你得到的确切数值是多少?如果总是相同的附加值,你就不能自己跳过它们吗?不确定是否相关,但matlab文档建议,如果你想收集到“单个”精度变量,可以使用'float32=>float32'
而不是'float32'
。另外,我肯定是这样的,但是您确定您的机器中的java浮点是32位吗?(我认为情况并非如此,因此您可以检查)。此外,是的,打印myMessage
在java中给出了什么,以及fread(tcpipServer,'char=>char')
在matlab中给出了什么?(即,我想知道您的数据是否带有某种标题?@tasospapstyllanou….'float32=>float32'在fread()中不是有效的精度。[请共享您阅读过的链接,可能我缺少该链接]。另外,对于字符,matlab有fscanf(),但不确定。@KevinWorkman…我的实际意图是通过matlab处理和接收连续发送x和y坐标。但问题是我也得到了oscp5数据包标签(这是显而易见的)。我只是在寻找一种方法,我可以删除这个标签在第一位(我不知道如何),并将获得相关的数据只。是的,你是对的,在matlab中接收到全部数据后,我可以自己移除标签。