【问题标题】:replacing octave matrix values替换倍频程矩阵值
【发布时间】:2018-03-25 14:01:32
【问题描述】:

我是八度音阶的初学者。我创建了一个名为 x 的 5x5 矩阵,如下所示

 X=ones(5,5)

我想用 (-3,+5) 替换最后一列(第 5 列)中的所有内容,但是当我给出以下命令时会出错

 y(:,5)=(-3,+5)

我该如何纠正这个问题?

【问题讨论】:

    标签: matlab matrix replace octave


    【解决方案1】:

    数值数组不能将其他数组存储为元素。您必须使用细胞才能实现您的目标:

    X = num2cell(ones(5));
    X(:,5) = {[-3 5]}
    
    X = 
    {
      [1,1] =  1
      [2,1] =  1
      [3,1] =  1
      [4,1] =  1
      [5,1] =  1
      [1,2] =  1
      [2,2] =  1
      [3,2] =  1
      [4,2] =  1
      [5,2] =  1
      [1,3] =  1
      [2,3] =  1
      [3,3] =  1
      [4,3] =  1
      [5,3] =  1
      [1,4] =  1
      [2,4] =  1
      [3,4] =  1
      [4,4] =  1
      [5,4] =  1
      [1,5] = -3 5
      [2,5] = -3 5
      [3,5] = -3 5
      [4,5] = -3 5
      [5,5] = -3 5
    }
    

    或者,您可以通过连接元胞数组使用两个单独的步骤来构建它:

    X = [num2cell(ones(5,4)) repmat({[-3 5]},5,1)]
    

    编辑

    按照您评论中的详细信息:

    X = randi([0 1],5);
    idx = X(:,5) == 1; % build an indexer to the elements equal to 1 in column 5
    
    X = num2cell(X); % convert the matrix into a cell array
    X(idx,5) = {[-3 5]}; % replace the indexed elements with a vector
    

    【讨论】:

    • Thanx 但是这个矩阵实际上是使用 csv 文件加载的:O
    • 如果要在最后一列插入向量,无论如何都必须将其转换为单元格...
    • 无论如何,请检查我的编辑以了解如何处理预定矩阵。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多