用tcpip matlab实现浮点数据的收发?

用tcpip matlab实现浮点数据的收发?,matlab,tcp,gnuradio,Matlab,Tcp,Gnuradio,我正在尝试通过TCP/IP(与GNU无线电接口)发送和接收数据: 当我读取数据时,这些都是0或1,我需要获取为我的应用程序传输的浮点数据。有人能告诉我怎么做吗?我不能用所有的0或1来复制您的问题,但我认为您需要使用一个额外的输入参数来解决这个问题。下面是一个简单的例子: data = rand(128, 1); echotcpip('on', 2012); t = tcpip('127.0.0.1', 2012, 'Timeout', 120); bytes_per_double = 8; se

我正在尝试通过TCP/IP(与GNU无线电接口)发送和接收数据:


当我读取数据时,这些都是0或1,我需要获取为我的应用程序传输的浮点数据。有人能告诉我怎么做吗?

我不能用所有的0或1来复制您的问题,但我认为您需要使用一个额外的输入参数来解决这个问题。下面是一个简单的例子:

data = rand(128, 1);
echotcpip('on', 2012);
t = tcpip('127.0.0.1', 2012, 'Timeout', 120);
bytes_per_double = 8;
set(t, 'InputBufferSize', bytes_per_double*numel(data), ...
       'OutputBufferSize', bytes_per_double*numel(data));
fopen(t);
fwrite(t,data(:),'double');
data_out=fread(t, t.InputBufferSize/bytes_per_double, 'double'); % Read in as doubles
echotcpip('off');
fclose(t);
delete(t);
isequal(data, data_out)

data
data\u out
中的值应该是双倍的,并且彼此相等。

为什么不先转换为ASCII?它会稍微慢一些,但更容易编码。换句话说,在发送之前使用num2str,在接收之后使用str2num。实际上,我需要传输浮点数(例如0.1067),这将从(0到1)变化。这里的数据实际上表示时域中的OFDM信号。我真的需要传输小数,最终这将通过USRPs传输。如果您能告诉我是否有任何方法可以通过matlab上的tcpip传输浮点数据,这将对我非常有帮助。还有其他功能吗。在这里,我将matlab与gnuradio companion进行接口。我还错过了一件事。。s=whos(“数据”);%我把tx_数据放错了there@SanjoyBasak,您可以编辑原始帖子以更正错误或添加信息;-)非常感谢你。你的代码运行得非常好。实际上之前我读到的是,我只能通过tcpip传输uint8数据,所以从float的转换总是给我0或1。您的代码运行得非常好。祝你度过愉快的一天,非常感谢你的帮助。)嗨,我需要更多的帮助。我实际上需要控制这里的采样率。你能告诉我怎么做吗。时间=10;i=1;抽签时间(toc)
data = rand(128, 1);
echotcpip('on', 2012);
t = tcpip('127.0.0.1', 2012, 'Timeout', 120);
bytes_per_double = 8;
set(t, 'InputBufferSize', bytes_per_double*numel(data), ...
       'OutputBufferSize', bytes_per_double*numel(data));
fopen(t);
fwrite(t,data(:),'double');
data_out=fread(t, t.InputBufferSize/bytes_per_double, 'double'); % Read in as doubles
echotcpip('off');
fclose(t);
delete(t);
isequal(data, data_out)