如何在MATLAB中将这些数据组织到结构中?

时间:2009-12-11 17:19:00

标签: arrays matlab matlab-struct

n=5说,以下代码为我提供了n随机生成的节点的图。这些节点不是结构(只是绘制点),但我想为每个节点分配一条消息,就像我对sinksource所做的那样,并跟踪节点的身份和位置。

例如,如果node 4具有(x,y)坐标(.3452 , .5463),我还想指定node 4 msgtemp_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'

1 个答案:

答案 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 结构数组,其中包含字段xymessage和{{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