Matlab 替换倍频程矩阵值

Matlab 替换倍频程矩阵值,matlab,matrix,replace,octave,Matlab,Matrix,Replace,Octave,我是八度音阶的初学者。我创建了一个名为x的5x5矩阵,如下所示 X=ones(5,5) 我想用-3、+5替换最后一列第5列中的所有值,但是当我发出以下命令时,它给出了一个错误 y(:,5)=(-3,+5) 如何更正此问题?数值数组不能将其他数组存储为元素。为了实现您的目标,您必须使用单元格: X = num2cell(ones(5)); X(:,5) = {[-3 5]} X = { [1,1] = 1 [2,1] = 1 [3,1] = 1 [4,1] =

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

 X=ones(5,5)
我想用-3、+5替换最后一列第5列中的所有值,但是当我发出以下命令时,它给出了一个错误

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

如何更正此问题?

数值数组不能将其他数组存储为元素。为了实现您的目标,您必须使用单元格:

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文件加载的:如果你想在最后一列中插入一个向量,你必须将它转换成一个单元格……无论如何,请检查我的编辑,看看如何处理一个预先确定的矩阵。