matlab 如何实现,如何在MATLAB中实现Benford定律

有几种方法可以做到这一点……

wholeNumber = 1934; %# Your number

numberString = num2str(wholeNumber,16); %# Convert to a string

matches = regexp(numberString,'[1-9]','match'); %# Find matches

firstNumber = str2double(matches{1}); %# Convert the first match to a double

wholeNumber = 0.04; %# Your number

numberString = num2str(wholeNumber,16); %# Convert to a string

isInSet = ismember(numberString,'123456789'); %# Find numbers that are

%# between 1 and 9

numberIndex = find(isInSet,1); %# Get the first number index

firstNumber = str2double(numberString(numberIndex)); %# Convert to a double

编辑:

在the MathWorks blogs之一出现了对该主题的一些讨论.那里提供了一些有趣的附加解决方案.提出的一个问题是使用矢量化解决方案,所以我提出了一个矢量化版本:

numberVector = [1934 0.04 -56];

numberStrings = cellstr(num2str(numberVector(:),16));

firstIndices = regexp(numberStrings,'[1-9]','once');

firstNumbers = cellfun(@(s,i) s(i),numberStrings,firstIndices);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值