这件事已经困扰我一段时间了。设A是给定的整数矩阵。我需要将A的每个元素转换到另一个以6为基数的数字系统中,并将转换的长度放入相应的条目中。例如,输入是:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16预期产出将是:
1 1 2 2
1 2 2 2
1 2 2 2
1 2 2 2假设原始矩阵是.,我尝试了dec2base(a,6),它给了我一个向量,而不是一个矩阵。
01
02
03
04
05
10
11
12
13
14
15
20
21
22
23
24经过检查,这是一个16乘2的向量。您可以看到,输出已经自动添加了0以使其整洁。但这不是我想要的。我相信我可以这样做,通过定义一个自写函数,它首先应用于单个值,然后使用数组操作。我只是在想,有什么更好的方法吗?为了你的时间和注意力,你要做很多事。
发布于 2015-06-24 19:19:56
可以使用arrayfun将函数应用于数组的每个元素。在这种情况下,输出将是一个单元格数组。这一个你可以用cell2mat把它转换成矩阵。
a = [1 5 9 13;
2 6 10 14;
3 7 11 15;
4 8 12 16];
b = arrayfun(@(x)length(dec2base(x,6)),a,'UniformOutput',false);
c = cell2mat(b)提供以下输出:
c =
1 1 2 2
1 2 2 2
1 2 2 2
1 2 2 2发布于 2015-06-24 22:38:52
这可以用对数来实现。让
A = [ 1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16 ];
b = 6;然后
result = floor(log(A)/log(b))+1;https://stackoverflow.com/questions/31035020
复制相似问题