저는 MatLab 초보자입니다. 필자가 작성한 간단한 스크립트를 디버깅하려고합니다. 내 코드를 디버깅하는 동안 이상한 오류가 발생했습니다. 여기에 스크립트입니다 : 나는이 프로그램을 실행하면왜 0 + 1 == 49입니까?
function [prob] = QuantumHW1(j,k,m)
X = [0 1; 1 0];
Y = [0 -sqrt(-1); sqrt(-1) 0];
Z = [1 0; 0 -1];
H = 1/sqrt(2) * [1 1; 1 -1];
S = [1 0; 0 i];
T = [1 0; 0 exp(sqrt(-1)*pi/4)];
mats = {X,Y,Z,H,S,T};
binJ = dec2bin(j,k);
binM = dec2bin(m,k);
totOps = {};
%Set up all the operators to be used
for p = 1:k
totOps(p) = mats(mod(p,6));
if p == 0
totOps(p) = X;
end
end
withM = {};
%Dot product with M
for p = 1:k
p
binM(p)+1
totOps(:,1)
withM(p) = totOps(:,binM(p)+1);
end
rTotal = 0;
%Now take components with respect to J
for p = 1:k
rTotal = rTotal + [not(binJ(p)),binJ(p)] * withM(p);
end
prob = norm(runningTotal)^2;
disp('The probability to measure j = %d in a k = %d system on input m = %d is %d',j,k,m,prob);
end
, 나는 선 withM(p) = totOps(:,binM(p)+1);
에 색인 아웃 바운드 오류의 배열을 얻을. 나는 p의 값이 맞는지 확인하려고 노력했다. for 루프를 통한 첫 번째 반복에서 binM (p) = 0입니다. 그러나 binM (p) + 1을 얻으려고하면 49가됩니다. 이것은 매우 이상합니다.
도움을 주시면 감사하겠습니다. 나는 왜 이것이 일어나고 있는지 파악하려고 벽에 머리를 내리고있다.
+1 재미있는 질문입니다. :) – yuk
제목은 오해의 소지가 있습니다. –