文档

实验室

同时将数据发送到并接收来自另一名工人的数据

句法

datareceived = labSendReceive(rcvwkridx,srcwkridx,datasent)
datareceived = labSendReceive(rcvwkridx,srcwkridx,datasent,tag)

参数

数据标准

发送给接收工人的发送工人的数据;任何MATLAB®数据类型。

DataReceived

接收工人接受的数据。

rcvwkridx

Labindex发送数据的接收工人。

srcwkridx

Labindex从中发送数据的源工人的。

标签

非负整数以识别数据。

描述

datareceived = labSendReceive(rcvwkridx,srcwkridx,datasent)发送数据标准给工人Labindexrcvwkridx,并收到DataReceived来自工人Labindexsrcwkridx。参数的值rcvwkridxsrcwkridx必须是标量。从概念上讲,此功能等同于以下呼叫序列:

LabSend(数据标准,RCVWKRIDX);datareceived = labReceive(srcwkridx);

在重要的例外,数据的发送和接收同时发生。这可以消除如果等效呼叫,否则可能会发生的僵局实验室会阻止。

如果rcvwkridx是一个空数组,实验室不发送数据,而只会接收。如果srcwkridx是一个空数组,实验室不接收数据,而只会发送。

datareceived = labSendReceive(rcvwkridx,srcwkridx,datasent,tag)使用指定的标签进行通信。标签可以是任何来自的整数032767

例子

在每个工人上创建一组唯一的数据,并将每个工人的数据转移到右边Labindex)。

首先使用魔法为变体数组创建唯一值的函数mydata在每个工人上。

mydata =魔术(LabIndex)
实验1:mydata = 1实验2:mydata = 1 3 4 2实验室3:mydata = 8 1 6 3 5 7 4 9 2

在任一侧定义工人,以便每个工人都会在工人的“左派”上接收数据,同时以“右”向工人发送数据,将最终工人的骑自行车数据循环回开始工作。

rcvwkridx = mod(labindex,numlabs) + 1;右边的一名工人srcwkridx = mod(labindex -2,numlabs) + 1;百分比左边的一个工人

传输数据,发送每个工人的mydata进入下一个工人其他达塔变量,将第三名工人的数据包装回第一个工人。

其他data = labsendreceive(rcvwkridx,srcwkridx,mydata)
实验室1:其他数据= 8 1 6 3 5 7 4 9 2实验2:其他数据

将数据传输到下一个工人的情况下,而没有将数据从最后一个工人包装到第一个工人。

如果labindex 别的rcvwkridx = [];结尾;如果LabIndex> 1;srcwkridx = labindex -1;别的srcwkridx = [];结尾;其他data = labsendreceive(rcvwkridx,srcwkridx,mydata)
实验室1:其他data = []实验2:其他data = 1实验室3:其他data = 1 3 4 2

在R2006b中引入

这个话题有帮助吗?