矩阵创建MATLAB

时间:2011-12-02 19:34:07

标签: matlab for-loop matrix

我正在使用以下代码在matlab中构建一个nxn矩阵:

x = linspace(a,b,n);

for i=1:n
    for j=1:n
        A(i,j) = x(j)^(i-1);
    end
    A
    i
    b(i) = (1/i)*x(n)^i - (1/i)*x(1)^i;
end

我用a = 1 b = 10和n = 10来测试它。我得到预期的结果,直到i = 8

i =

 8

A =

第1至7栏

       1           1           1           1           1           1           1
       1           2           3           4           5           6           7
       1           4           9          16          25          36          49
       1           8          27          64         125         216         343
       1          16          81         256         625        1296        2401
       1          32         243        1024        3125        7776       16807
       1          64         729        4096       15625       46656      117649
       1         128        2187       16384       78125      279936      823543
       1         256        6561       65536      390625     1679616     5764801

第8至10栏

       1           1           1
       8           9          10
      64          81         100
     512         729        1000
    4096        6561       10000
   32768       59049      100000
  262144      531441     1000000
 2097152     4782969    10000000
16777216    43046721   100000000

但是从i = 9开始就变成了这个:

i =

 9

A =

1.0e + 09 *

第1至9栏

0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0001
0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0001    0.0003    0.0005
0.0000    0.0000    0.0000    0.0000    0.0001    0.0003    0.0008    0.0021    0.0048
0.0000    0.0000    0.0000    0.0001    0.0004    0.0017    0.0058    0.0168    0.0430
0.0000    0.0000    0.0000    0.0003    0.0020    0.0101    0.0404    0.1342    0.3874

第10栏

0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0010
0.0100
0.1000
1.0000

有人可以告诉我发生了什么事吗?我在matlab方面不是很有经验(我主要使用c ++或python),到目前为止我似乎无法弄明白。

2 个答案:

答案 0 :(得分:2)

这只是大数字的格式化问题。尝试

sprintf('%20.0f', A(end,end))

你会看到这个号码是正确的。至少在某种程度上,你会遇到双重表征问题......

答案 1 :(得分:1)

因为您的数据显示应用了常见的缩放。请参阅输出:

A =

1.0e+09 *

矩阵中的每个条目都考虑了10 ^ 9的公因子。

您可能需要使用以下方法调整输出显示:

format short g