对n=5
说,以下代码为我提供了n
随机生成的节点的图。这些节点不是结构(只是绘制点),但我想为每个节点分配一条消息,就像我对sink
和source
所做的那样,并跟踪节点的身份和位置。
例如,如果node 4
具有(x,y)坐标(.3452 , .5463)
,我还想指定node 4
msg
和temp_value
。我怎么能这样做?
n = input('No. of Nodes:');
sink = [0 0];
source = [1 1];
node = rand(n,2)
x = node(:,1);
y = node(:,2);
x1 = sink(:,1);
y1 = sink(:,1);
x2 = source(:,1);
y2 = source(:,1);
plot(x,y,'o')
hold on
plot(x1,y1,'r*')
hold on
plot(x2,y2,'r*')
hold on
sink = struct;
sink.msg = 'temp';
sink.temp_value = '30'
source = struct;
source.msg = 'temp';
source.temp_value = '30'
答案 0 :(得分:4)
我建议创建一个结构数组,用于存储与每个“节点”关联的数据的所有。您可以通过以下方式调用STRUCT来为节点创建所有数据:
N = 5; %# Number of nodes
coords = num2cell(rand(N,2)); %# Cell array of random x and y coordinates
nodes = struct('x',coords(:,1),... %# Assign x coordinates
'y',coords(:,2),... %# Assign y coordinates
'message','temp',... %# Assign default message
'value',30); %# Assign default value
变量nodes
是 N-by-1 结构数组,其中包含字段x
,y
,message
和{{1 }}。您可以使用常用的数组和字段索引来访问和修改数据:
value
然后,您可以按以下方式绘制节点:
>> nodes(1) %# Contents of node 1
ans =
x: 0.4387
y: 0.4898
message: 'temp'
value: 30
>> nodes(1).message %# Message for node 1
ans =
temp
>> nodes(1).message = 'hello world!'; %# Change message for node 1