【问题标题】:Matrix creation MATLAB矩阵创建 MATLAB
【发布时间】:2011-12-02 19:34:07
【问题描述】:

我正在使用以下代码在 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 的预期结果

我 =

 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 开始就变成了这样:

我 =

 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),到目前为止我自己似乎无法弄清楚。

【问题讨论】:

  • 抱歉,您希望得到什么?
  • 作为代码的替代方案,您可以简单地编写[value,exponent] = meshgrid(a:b,0:(n-1)); A = value.^exponent

标签: matlab for-loop matrix


【解决方案1】:

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

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

你会看到这个数字是正确的。至少在某些时候,您会遇到双重表示问题......

【讨论】:

  • 谢谢! Matlab 输出格式实际上确实让我很困惑。
【解决方案2】:

因为您的数据显示应用了一个通用的缩放比例。在您的输出中查看:

A =

1.0e+09 *

10^9 的公因数已从矩阵中的每个条目中分解出来。

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

format short g

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2014-07-27
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多