首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将给定矩阵的每一个整数传递给另一个数字系统并计算其长度。

将给定矩阵的每一个整数传递给另一个数字系统并计算其长度。
EN

Stack Overflow用户
提问于 2015-06-24 19:12:17
回答 2查看 23关注 0票数 2

这件事已经困扰我一段时间了。设A是给定的整数矩阵。我需要将A的每个元素转换到另一个以6为基数的数字系统中,并将转换的长度放入相应的条目中。例如,输入是:

代码语言:javascript
复制
 1     5     9    13
 2     6    10    14
 3     7    11    15
 4     8    12    16

预期产出将是:

代码语言:javascript
复制
 1  1  2  2
 1  2  2  2
 1  2  2  2
 1  2  2  2

假设原始矩阵是.,我尝试了dec2base(a,6),它给了我一个向量,而不是一个矩阵。

代码语言:javascript
复制
01
02
03
04
05
10
11
12
13
14
15
20
21
22
23
24

经过检查,这是一个16乘2的向量。您可以看到,输出已经自动添加了0以使其整洁。但这不是我想要的。我相信我可以这样做,通过定义一个自写函数,它首先应用于单个值,然后使用数组操作。我只是在想,有什么更好的方法吗?为了你的时间和注意力,你要做很多事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-24 19:19:56

可以使用arrayfun将函数应用于数组的每个元素。在这种情况下,输出将是一个单元格数组。这一个你可以用cell2mat把它转换成矩阵。

代码语言:javascript
复制
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)

提供以下输出:

代码语言:javascript
复制
c =
     1     1     2     2
     1     2     2     2
     1     2     2     2
     1     2     2     2
票数 0
EN

Stack Overflow用户

发布于 2015-06-24 22:38:52

这可以用对数来实现。让

代码语言:javascript
复制
A = [ 1     5     9    13
      2     6    10    14
      3     7    11    15
      4     8    12    16 ];
b = 6;

然后

代码语言:javascript
复制
result = floor(log(A)/log(b))+1;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31035020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档