2017-03-04 3 views

답변

0

을 입력 진수로 주어진 속도가 중요한 경우 않으면 그 다음 내가 생각할 수있는빠른 방법은 다음과 같습니다

num = 1110001010; 
vec = mod(floor(num./ 10.^(floor(log10(num)):-1:0)),2); 

향상은 method provided by Rotemnum2str을 합친 것보다 약 4.5x (숫자가 클수록 커짐)입니다. 입력이 문자열로, 다음 vec = (str == '1');이 가장 효율적인 주어진다면 물론

num = 1110001010; 
niter = 1e5; 

tic 
for i = 1:niter 
    vec = (num2str(num) == '1'); 
end 
t1 = toc; 

tic 
for i = 1:niter 
    vec = mod(floor(num ./ 10.^(floor(log10(num)):-1:0)),2); 
end 
t2 = toc; 

disp(t1/t2); 

, : 여기 벤치마킹에 사용되는 코드입니다.

+0

num = 1110001010; vec = mod (층 (숫자/10.^(층 (log10 (num)) : - 1 : 0)), 2); num 길이 16까지 작동합니다. 길이를 14756으로 적용하고 싶습니다. –

1

표준 답변이없고 해결책 중 하나가 참조 용으로 제공됩니다.

진수 문자열 인 경우
a = dec2bin(906); % a = '1110001010' 
va = a-'0';  % va = [1,1,1,0,0,0,1,0,1,0]; 
1

, 당신은 논리적 배열로 변환 할 수 있습니다 :

s = '1110001010'; 
S = (s == '1'); 
수는 MATLAB에 저장되는 방법
관련 문제