【发布时间】:2015-10-29 15:40:37
【问题描述】:
我正在尝试编写一个简单的代码,用一系列数字替换矩阵中的一个特定值。更清楚地说,假设我有我的矩阵 G,它是一个 3x3 矩阵,我想用 (3,3)+i 替换 G 中的 (3,3) 值,其中 i 是 1 - 10。我想创建本质上10 个新矩阵,其中 (3,3) 替换为 (3,3)+1,然后是 (3,3)+2,然后是 (3,3)+3,直到值 10。 原矩阵为:
G=[2 4 5; 6 7 8; 8 8 2]
所以,输出应该是一系列 10 个新的 G 矩阵,所以 (3,3)+1 应该给我
G=[2 4 5; 6 7 8; 8 8 3]
对于 (3,3)+2 它应该给我:
G=[2 4 5; 6 7 8; 8 8 4]
我知道我可以逐行重新编码每个矩阵,但我想创建一个循环来有效地执行此操作,并可能将 i 更改为 .001 增量而不是 1 的步长。
我尝试编写一个简单的代码,但我知道我缺少输出部分并且我遇到了一些括号问题。
for i = 1:10;
B[3,3]= B[3,3]+i;
end
【问题讨论】:
-
试试
bsxfun(@plus,G,cat(3,1,2,3,4,5,6,7,8,9,10))。 -
对不起上面的评论,我的意思是:
M = zeros(3,3,10);M(3,3,:) = 1:10;B = bsxfun(@plus,G,M)。然后您可以以B(:,:,i)的身份访问ith 矩阵。 -
@Sophia14 在您的代码中,您需要将
B[3,3] = B[3,3]+i;替换为B(3,3) = B(3,3)+i;
标签: matlab for-loop matrix replace