【问题标题】:new matrix from existing one现有矩阵的新矩阵
【发布时间】:2011-02-28 07:00:49
【问题描述】:

假设我有一个包含两列的矩阵。每列都有数千个值。第一列的元素是普通数字。第 2 列的元素为 0 或 1。为简单起见,举个例子:

U = [ 25 36 12 52 32 12 14 ; 0 1 1 0 0 0 1]'

我想创建一个新的一列矩阵 P,如果 U 的第 2 列的元素为 0,则 P 的元素与第 1 列中的对应元素相同。但是,如果 U 的第 2 列元素为 1,则 P 的元素为零。

所以,上面例子的结果是:

P = [25 0 0 52 32 12 0]'

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    那就是:

    > P= U(:, 1).* ~U(:, 2)
    P =
       25
        0
        0
       52
       32
       12
        0
    

    【讨论】:

      【解决方案2】:

      你没有告诉 c# 这个答案是哪种编程语言

      void process()
      {
          int column_length = 10;
          int columns = 3;
          int[,] k = new int[column_length, columns];
      
          /*fill array
              .
              .
              .*/
          //process it
          for (int i = 0; i < k.GetLength(0); i++)
          {
              if (k[i, 1] == 1)//if this row column 0 =1
              {
                  k[i, 2] = 0;
              }
              else if (k[i, 1] == 0)//if this row column 0 =0
              {
                  k[i, 2] = k[i, 0];
              }
          }
      }
      

      【讨论】:

      • 对不起。我忘了提到我正在使用 MATLAB
      【解决方案3】:

      numpy,除了eat的回答,你还可以用

      numpy.where(U[:,1], 0, U[:,0])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        相关资源
        最近更新 更多