Matlab 替换倍频程矩阵值
我是八度音阶的初学者。我创建了一个名为x的5x5矩阵,如下所示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=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文件加载的:如果你想在最后一列中插入一个向量,你必须将它转换成一个单元格……无论如何,请检查我的编辑,看看如何处理一个预先确定的矩阵。