在matlab中将矩阵中的一个值与一系列数字相乘(用于循环)

在matlab中将矩阵中的一个值与一系列数字相乘(用于循环),matlab,for-loop,matrix,replace,Matlab,For Loop,Matrix,Replace,我试图编写一个简单的代码,用一系列数字替换矩阵中的一个特定值。更清楚地说,假设我有我的矩阵G,它是一个3x3矩阵,我想用3,3+I替换G中的3,3值,其中我是1-10。我想创建10个新矩阵,其中3,3被3,3+1替换,然后是3,3+2,然后是3,3+3,最大值为10。 原始矩阵为: 所以,输出应该是一系列10个新的G矩阵,所以3,3+1应该给我 对于3,3+2,它应该给我: G=[2 4 5;6 7 8;8 8 4] 我知道我可以一行一行地重新编码每个矩阵,但我想创建一个循环来有效地执行此操作,

我试图编写一个简单的代码,用一系列数字替换矩阵中的一个特定值。更清楚地说,假设我有我的矩阵G,它是一个3x3矩阵,我想用3,3+I替换G中的3,3值,其中我是1-10。我想创建10个新矩阵,其中3,3被3,3+1替换,然后是3,3+2,然后是3,3+3,最大值为10。 原始矩阵为:

所以,输出应该是一系列10个新的G矩阵,所以3,3+1应该给我

对于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
这很简单:

1制作单元阵列:B=cell1,10

2制作一个矩阵,位置3,3上有1,其他地方有零:M33=零3,3;M333,3=1

3循环从1到10的数字,并将G+i*M33保存到B的第i个条目:


现在,您可以以B{i}的形式访问第i个矩阵。

试试类似的方法bsxfun@plus,G,cat3,1,2,3,4,5,6,7,8,9,10.对上述评论感到抱歉,我的意思是:M=zeros3,3,10;M3,3,:=1:10;B=bsxfun@plus,G,M。然后您可以访问第i个矩阵作为B:,:,i.@Sophia14在您的代码中,您需要替换B[3,3]=B[3,3]+i;通过B3,3=B3,3+i;那么,好吧,你刚刚创建了另一个矩阵并将它们添加到循环中?我想我明白了。谢谢。我怎样才能让循环在一个新的单独变量中自动生成所有新矩阵。我知道我可以通过B{I}访问它,但是我希望每个都被生成并保存在一个新变量中。如果我说B{4}:G=[245;678;886];但是如果我只是说B{I},它给了我第10个I的B。你可以这样做,但这不是我建议做的事情!我知道问这样一个问题很烦人,我怎么做X?然后得到答案你不应该做X!。让我把它转过来!给我一个好的!您希望将它们放在单独变量中的原因;然后我会向你解释如何——或者更可能的是,我会解释为什么这不是一个好主意,以及你应该如何做!好的,我想使用创建的新矩阵,然后使用它来显示MLE如何在我的原始maxtrix下最大化,当我添加和减去例如10时,“最佳”就是原始矩阵。希望这是有意义的。所以,我认为代码在我需要所有矩阵都可用之后才能工作,因为如果我写B{I},那么它只会给我第10个,而不是全部。别担心!您可以访问所有矩阵。B{1}对于第一个矩阵,B{2}对于第二个矩阵,依此类推,当你放入B{i}时得到第十个矩阵的原因是i=10,所以在这种情况下,B{i}与B{10}相同!
G=[2 4 5; 6 7 8; 8 8 3]
for i = 1:10;
    B[3,3]= B[3,3]+i;
end
for i = 1:10
  B{i} = G+i*M33;
end