【问题标题】:How to subtract 2D data(lots) with 2D data(one) in MATLAB [duplicate]如何在MATLAB中用二维数据(一个)减去二维数据(很多)[重复]
【发布时间】:2016-07-08 03:59:15
【问题描述】:

您好,我是使用 MATLAB 的新手

我要做的是 我有 m 维样本(数据),这里 m 为 2。

MATLAB代码中的数据是这样的

X1 = [4,2;2,4;2,3;3,6;4,4];
X2 = [9,10;6,8;9,5;8,7;10,8];

我要减去样本的平均值,即

Mu1 = [3;3.8];

然后我可以在一行中减去每个二维数据和MATLAB代码中的样本平均值

【问题讨论】:

    标签: matlab


    【解决方案1】:

    如果我对您的理解正确,您想从您的数据中减去平均 Mu1x1x2)。

    如果是这样,您可以使用 bsxfun 函数:

    X1_subtracted = bsxfun(@minus, X1, Mu1')
    

    哪个输出:

    X1_subtracted =
         1.0000   -1.8000
        -1.0000    0.2000
        -1.0000   -0.8000
              0    2.2000
         1.0000    0.2000
    

    请注意,您必须将'Mu1 一起使用,因为X1 的形状为5x2,而Mu1 的形状为1x2。

    【讨论】:

    • 考虑使用.' 而不是' 进行转置,因为如果没有这个点,它将是ctranspose 而不是transpose。当值很复杂时,这会产生问题,因为会计算复共轭转置。
    【解决方案2】:

    要获得X1 - mean(X1),您可以尝试

    X = [X1(:,1) - mean(X1(:,1)), X1(:,2) - mean(X1(:,2))]
    
    this will output
    
        1.  - 1.8  
      - 1.    0.2  
      - 1.  - 0.8  
        0.    2.2  
        1.    0.2  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-25
      • 2020-06-28
      • 2015-04-05
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多