Matlab:将矩阵中一个值的百分比移动到另一个值

Matlab:将矩阵中一个值的百分比移动到另一个值,matlab,matrix,Matlab,Matrix,如果我有矩阵A(9x9xt): 和向量B(9x1xt): 我试图将a(7,1,j)的一个百分比移动到a(7,2,j+1)。在这种情况下,百分比为B(3,1,j)。 我想我应该创建一个新的值,m(1,1,j),它保存百分比值:B(3,1,j)*a(7,1,j) 然而,这是行不通的。当我输入“m(1,1,j)”时,m(1,1,j)实际上似乎并不等于A(7,1,j)*B(3,1,j) 是否有人对如何在下一个时间步将矩阵中一个值的百分比移动到另一个值有更好、更简单的想法……必须将该百分比从一个值中移除并

如果我有矩阵A(9x9xt):

和向量B(9x1xt):

我试图将a(7,1,j)的一个百分比移动到a(7,2,j+1)。在这种情况下,百分比为B(3,1,j)。

我想我应该创建一个新的值,m(1,1,j),它保存百分比值:B(3,1,j)*a(7,1,j)

然而,这是行不通的。当我输入“m(1,1,j)”时,m(1,1,j)实际上似乎并不等于A(7,1,j)*B(3,1,j)

是否有人对如何在下一个时间步将矩阵中一个值的百分比移动到另一个值有更好、更简单的想法……必须将该百分比从一个值中移除并添加到另一个值中。
编辑:这可以在循环中完成吗?

如果您的最后一行是:

      m(1,1,j)= A(7,1,j)*B(3,1,j); %# Find out what the percentage of A(7,1,j) is.
      A(7,2,j+1)= A(7,2,j)+m(1,1,j); %# Add that ''percentaged'' value to the A(7,2,j+1)
      A(7,1,j+1) = A(7,1,j)-m(1,1,j); %# Remove that ''percentaged'' value from A(7,1,j+1)
而不是

A(7,1,j) = A(7,1,j)-m(1,1,j);

至于是否有更好的方法来做到这一点,我不确定,因为我不确定你最终要做什么。我猜想,如果您试图对所有行、所有列执行此操作,或者以其他方式重复执行此操作,那么将有一种矢量化的方法来执行此操作,而不是对循环执行

显然存在两个问题。首先是最后一行中的
j+1
(如@Sam所示)。其次,您错误地将第j项增加了
j*m(1,1,j)
,而不是
m(1,1,j)
。这是因为您添加到下一个元素,移动到下一个元素,然后添加累计金额。纠正的矢量化版本:

A(7,1,j+1) = A(7,1,j)-m(1,1,j);

注意:您的原始代码也增加了A的大小。

最后一行从技术上讲应该是j+1,但它会导致下面突出显示的问题。感谢您抽出时间:)
      m(1,1,j)= A(7,1,j)*B(3,1,j); %# Find out what the percentage of A(7,1,j) is.
      A(7,2,j+1)= A(7,2,j)+m(1,1,j); %# Add that ''percentaged'' value to the A(7,2,j+1)
      A(7,1,j+1) = A(7,1,j)-m(1,1,j); %# Remove that ''percentaged'' value from A(7,1,j+1)
A(7,1,j) = A(7,1,j)-m(1,1,j);
A(7,1,j+1) = A(7,1,j)-m(1,1,j);
t=3;
A = repmat(reshape(1:81,9,9)',[1,1,t]);
B = repmat([0.5 0.6 0.7 0.5 0.6  0.7 0.5 0.6 0.7]', [1,1,t]);
m(1,1,1:t)= A(7,1,1:t).*B(3,1,1:t); %# Find out what the percentage of A(7,1,j) is.
A(:,:,t+1)=0; % Add zeros matrix at A(:,:,t+1)
A(7,2,2:t+1) = A(7,2,2:t+1)+m(1,1,1:t); %# Add that ''percentaged'' value to the A(7,2,j+1)
A(7,1,1:t) = A(7,1,1:t)-m(1,1,1:t); %# Remove that ''percentaged'' value from A(7,1,j+1)