【问题标题】:Set variable in Matlab Dataset array to a single value将 Matlab Dataset 数组中的变量设置为单个值
【发布时间】:2011-05-10 11:10:57
【问题描述】:

假设我有一个数据集数组(来自统计工具箱):

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

我正在汇总来自各种来源的数据,因此我想在所有这些观察结果中将“位置”设置为 4,然后再将 vertcat 这个数据集与其他数据集放在一起。在普通矩阵中,您会说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 的厌恶吗?谢谢。

edit:我想我真正想要的是避免指定 4 的数组的维度。

【问题讨论】:

    标签: matlab syntax


    【解决方案1】:

    您可以尝试使用ones 代替repmat

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

    【讨论】:

    • 谢谢,这很好,但在任何情况下,它仍然必须是4*ones(length(myds),1),这仍然有点难看。
    • 我理解你想要做什么,但我不认为它可以用数据集来完成,尽管它可以很好地处理数组。您的第一个建议可能是最简单的。就个人而言,我会说myds.Location=4*ones(size(myds.Observation)) 非常清楚易懂,并且可以一口气完成工作。
    【解决方案2】:

    它并不优雅,但你也可以尝试:

    myds.Location= myds.Observation*0 + 4;
    

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 2017-12-30
      • 2023-04-06
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多