2011-05-09 48 views
3

比方说,我有一个数据集的数组(从统计工具箱):在Matlab数据集数组变量设置为一个值

>> myds 
myds = 
    Observation SheepCount 
    1    88   
    2    2   
    3    14   
    4    12   
    5    40 

我把一起从各种来源的数据,所以我想在将这个数据集与其他数据集合在一起之前,将“位置”设置为4。在一个正常的矩阵中,你会说myds(:, 3) = 4,它会将4广播到矩阵中的所有空间。

有没有办法在数据集上做到这一点,而不使用repmat

事情我已经试过了不起作用:

myds(:, 'Location') = 4 
myds(:).Location = 4 
myds.Location(:) = 4 
myds.Location = 4 

的事物,它们:

myds.Location = 4; myds.Location(:) = 4; % have to run both 
myds.Location = repmat(4, length(myds), 1); 

所以,我必须克服我厌恶 repmat?谢谢。

编辑:我想我真正想要的是避免指定4的数组的尺寸。

回答

2

您可以尝试使用ones而不是repmat

myds.Location=4*ones(1,5); 
+0

谢谢,这很好,但决不是一个简单的情况下,它仍然必须是'4 *者(长度(myds) ,1)',这仍然有点丑陋。 – rescdsk 2011-05-09 20:51:16

+1

我明白你想要做什么,但我不认为它可以用数据集来完成,尽管它对数组非常好。你的第一个建议也许是最简单的。就个人而言,我会说'myds.Location = 4 * ones(size(myds.Observation))'很清楚理解,并且可以完成一行工作。 – abcd 2011-05-09 21:41:15

1

这不是优雅,但你也可以尝试:

myds.Location= myds.Observation*0 + 4; 
相关问题