필터 지우기
필터 지우기

Champernowne Constant loop help

조회 수: 1 (최근 30일)
Nguyen Huy
Nguyen Huy 2021년 5월 15일
편집: Jonas 2021년 5월 16일
%i have Champernowne Constant is a real number whose digits in decimal representation come from the concatenation of all consecutive positive integers starting from 1. ex:'12345678910111213....'
%my job is return array vy contain nth digit from Champernowne Constant,n is take from array vx
%ex: vx=[10 11 12 13 14 15] => vy=[ 1 0 1 1 1 2]
%my code is
vy=[]
for i=1:length(vx)
str='';
j=1;
while length(str)<vx(i)
str=strcat(str,num2str(j));
j=j+1;
end
vy=[vy str2num(str(vx(i)))];
end
%the code is success with litte vx,but with lagre vx it over max loop of matlab,so how could i fix
  댓글 수: 1
Jonas
Jonas 2021년 5월 16일
편집: Jonas 2021년 5월 16일
maybe it helps if you have a look into the width of numbers: the numbers from 0:9 have size ceil(log10(number))=1, after that the numbers from 10:99 have width ceil(log10(numbers))=2 and so on. this way you could have a look only on the numbers in the decade you are interested in.
by the way, how big gets your n? you can easily use smth like
sprintf('%i',1:10000)
and then extract the numbers you are interested in?

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by