我正在研究一个应该写出乘法表的程序,如图所示。
这就是我所做的
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
答案 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
矩阵,该矩阵会自动填充空格。