【发布时间】:2018-03-25 14:01:32
【问题描述】:
我是八度音阶的初学者。我创建了一个名为 x 的 5x5 矩阵,如下所示
X=ones(5,5)
我想用 (-3,+5) 替换最后一列(第 5 列)中的所有内容,但是当我给出以下命令时会出错
y(:,5)=(-3,+5)
我该如何纠正这个问题?
【问题讨论】:
标签: matlab matrix replace octave
我是八度音阶的初学者。我创建了一个名为 x 的 5x5 矩阵,如下所示
X=ones(5,5)
我想用 (-3,+5) 替换最后一列(第 5 列)中的所有内容,但是当我给出以下命令时会出错
y(:,5)=(-3,+5)
我该如何纠正这个问题?
【问题讨论】:
标签: matlab matrix replace octave
数值数组不能将其他数组存储为元素。您必须使用细胞才能实现您的目标:
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
【讨论】: