三角乘法表

时间:2015-09-16 01:16:14

标签: matlab matrix

我正在研究一个应该写出乘法表的程序,如图所示。

Desired output

这就是我所做的

A = (1:10)'*(1:10);
tril (A)

这是我的输出。有没有办法可以在没有零的情况下做到这一点? 或者我应该采用不同的方法?非常感谢任何帮助。

     1     0     0     0     0     0     0     0     0     0
     2     4     0     0     0     0     0     0     0     0
     3     6     9     0     0     0     0     0     0     0
     4     8    12    16     0     0     0     0     0     0
     5    10    15    20    25     0     0     0     0     0
     6    12    18    24    30    36     0     0     0     0
     7    14    21    28    35    42    49     0     0     0
     8    16    24    32    40    48    56    64     0     0
     9    18    27    36    45    54    63    72    81     0
    10    20    30    40    50    60    70    80    90   100

2 个答案:

答案 0 :(得分:3)

以这种方式:

A=tril((1:10)'*(1:10))
A(A==0)=NaN;              
S=num2str(A);
S(S==78|S==97)=' '

第二行区分普通老字号' 0'来自一个讨厌的' 0'在比如说,' 20'。

第三行将数组转换为字符串。

最后一行取代资本' N' (字符78)和小写字母' a' (字符97)有空格。

答案 1 :(得分:1)

你的方法很好,但如果你想避免零,你需要字符串,而不是数字。例如,

sprintf('%i ', k:k:k^2)

工作原理

cellfun以字符串形式生成表的每一行。 char用于迭代所有行。这些行被打包成一个字符串的单元格数组,并且该单元格数组被转换为480x480矩阵,该矩阵会自动填充空格。