「hi 這個程序在Matlab中讀取兩個輸入文件(file.txt和file2.txt),它有80000個隨機數當我執行下面的程序時它有錯誤(索引超出範圍;在Matlab中值爲1的0)我無法修復這個錯誤,好心我需要你的幫助。指數越界;在matlab中值爲1 out of bound 0
clear all
close all
rel=textread('file.txt');
ct=textread('file2.txt');
bh0=zeros(256,20000);
bh1=zeros(256,20000);
Te2=[99 124 119 123 242 107 111 197];
for i=1:20000
m(i)=bitxor(ct(16*(i-1)+1),180);
if m(i)==Te2(1)|m(i)==Te2(2)|m(i)==Te2(3)|m(i)==Te2(4)|m(i)==Te2(5)|m(i)==Te2(6)|m(i)==Te2(7)|m(i)==Te2(8)
bh0(m(i)+1,i)=rel(1+4*(i-1));
else
bh1(m(i)+1,i)=rel(1+4*(i-1));
end
end
for k=1:256
counter=1;
for i=1:20000
if bh0(k,i)~=0
bh0_final(k,counter)=bh0(k,i);
counter=counter+1;
end
end
end
for k=1:256
counter=1;
for i=1:20000
if bh1(k,i)~=0
bh1_final(k,counter)=bh1(k,i);
counter=counter+1;
end
end
end
for i=1:20000
ciphertext0(i)=ct(16*(i-1)+1);
reload0(i)=rel(1+4*(i-1));
end
sum_c0=zeros(20000,256);
for i=1:20000
for j=1:256
if ciphertext0(i)==j
sum_c0(i,j)=reload0(i);
end
end
end
counterr=zeros(1,256);
summ=zeros(1,256);
for i=1:20000
for k=1:256
if sum_c0(i,k)~=0
counterr(k)=counterr(k)+1;
summ(k)=summ(k)+sum_c0(i,k);
end
end
end
for k=1:256
mean(k)=summ(k)/counterr(k);
end
var=zeros(1,256);
for i=1:20000
for k=1:256
if sum_c0(i,k)~=0
var(k)=((sum_c0(i,k)-mean(k))^2)/counterr(k);
end
end
end
+2
其實讀完整的錯誤,並思考它說什麼。 Matlab的錯誤消息非常有用。它會告訴你哪個語句導致錯誤,這使得解決問題變得更容易。 –
+0
沒有閱讀代碼,問題可能是空矩陣?你有一個0×1的矩陣,而不是1×0的矩陣或類似的東西?除此之外,實際上很難說出爲什麼出現界限錯誤。我可以建議[調試器](http://se.mathworks.com/help/matlab/debugging-code.html)? –