matlab10的阶层怎么输入,利用matlab做以10为底的阶乘

今天白天在Bitunion上看到一个帖子,询问的原文内容是这样

0.01和10000之间以10倍递增来生成向量用什么命令?

好像可以用":"运算符的,忘记怎么用了

其实看到这个帖子的第一印象,我想到的是linspace做运算,不过打开Matlab看了一下,这个还是不行,linspace做的是在线性轴上作平均采样点。

然后问了一下CNan同学,她提出的是用相对linspace用法的另一个函数logspace。刚才考虑了一下,这个还是可行的。对应的代码如下所示:

logspace(-2,4,7)  %-2代表10^(-2)为下限,而10^4则是上限,7代表在指数域中采7个点

然而已开始我所想到的是去DIY一个算法。就是利用其指数的线性递增关系,把指数用一个变量来描述出来,然后用10去与这个变量作指数运算,其代码如下:

a=-2:4;

b=10.^a

其实个人认为这个还是比较容易理解的。但是对比两种描述方式不难发现,第一种虽然只需要一行代码,但需要先把上限与下限的指数差算出来,而后一种则在变量a中自动包含了这一条信息。

当然那个帖子讨论的范围也逐渐超出了LZ的问题。有人问到为什么出来的结果是这样呢?

b =

1.0e+004 *

0.0000    0.0000    0.0001    0.0010    0.0100    0.1000    1.0000

前两个数据为什么是零呢?

我觉得其实这是因为Matlab本身对数据的显示只保留小数点后4位,为什么总数要把小数点向左移动了4位,应该是取决于这一行数的最大值(10000)。

其实这些都称不上什么算法,本身并不难。不同的代码可以输出相同的结果,但各有优劣势。对比才能发现其中的差异,这样才能在使用的时候选择合适的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值