2016-08-15 46 views
0

我想将矩阵的最后一行乘以一个不同顺序的变量;将矩阵的最后一行乘以一个不同顺序的变量

%A matrix 
      N = length(a)-1;% order of the matrix 
      last_row = (a(1:end-1))*(1/a(end));% creating the last row 
      k = ones(1,N-1); 
      A = diag(k,1) ; % diag(vector, k) produce a matrix filled with zero's and k'th off diagonal as vector, in this case, 1's. 
      last_row = (wc.^(N:-1:1)).*last_row;% multiply the variable with different order. 
      A(end,:) = last_row;% adding the last_row 

之前,我乘的变量,以我的 “LAST_ROW”

last_row = 
     1.0000 2.6131 3.4142 2.6131 

我的矩阵:

A = 
     0  1  0  0 
     0  0  1  0 
     0  0  0  1 
     0  0  0  0 

变量相乘后:

last_row = 
    1.0e+009 * 
     1.2624 0.0175 0.0001 0.0000 

当我插入最后一行:

A = 
    1.0e+009 * 
      0 0.0000   0   0 
      0   0 0.0000   0 
      0   0   0 0.0000 
     1.2624 0.0175 0.0001 0.0000 

它正在改变不是我的最后一行的元素,我在哪里出错。所有这些1应该保持原样

+0

你的意思是例如A(1,2)应该是一个?然后我必须告诉你它*仍然*是1! Matlab尝试格式化矩阵以解释最后一行。只要检查你的自我,如果A(1,2)是1 –

回答

0

如果您的计算正确,则只更改生成矩阵的最后一行。当MATLAB格式化输出时,MATLAB会尝试计算矩阵的所有数字。
所以总之没有问题。例如检查A(1,2)是否为1
如果你想要不同的格式,看看formatsprintf

+0

好吧,所以这是完全没用的后,对此感到抱歉 – Ashok

+0

你检查A(1,2)? –

+0

是的,它是1.不知道如何改变格式,虽然 – Ashok