error in the code

5 ビュー (過去 30 日間)
qas abd
qas abd 2024 年 8 月 1 日
編集済み: qas abd 2024 年 8 月 13 日
erroe in string(j,n)=string(k,n);
Index in position 1 exceeds array bounds. Index must not exceed 3.
for k=1:Npop
for j=1:dim
busLocation(j,k)=busd(busLocation(j,k),1);
end
sdf= unique(busLocation(:,k));
while length(sdf)<dim
sdf=randi([2 length(busd(:,1))],dim,1);
for j=1:dim
sdf(j)=busd(sdf(j),1);
end
busLocation(:,k)=sdf;
sdf= unique(busLocation(:,k));
end
end
ndif = [0.28; 0.35; 0.39; 0.35; 0.27; 0.34; 0.40; 0.34; 0.25; 0.32];
for k = 1:Npop
mdif(k)= ndif(k);
end
nsw=length(string);
mpop = round(Npop/4);
for j = 1:mpop
minman = min(mdif(:));
for k = 1:Npop
if mdif(k)== minman
for n=1:nsw
string(j,n)=string(k,n);
end
mdif(k)= 1010;
break;
end
end
end
for j = 1:(Npop-mpop)
for bits=1:nsw
string(mpop +j,bits) = string(j,bits);
end
end ; end

回答 (1 件)

Voss
Voss 2024 年 8 月 1 日
The first time this line is encountered:
string(j,n)=string(k,n);
k is 9, but string only has 3 rows. That's the reason for the error.
  2 件のコメント
qas abd
qas abd 2024 年 8 月 1 日
Thank you for your response, even this gives an error
string(j,n)=string(j,n);
Torsten
Torsten 2024 年 8 月 1 日
編集済み: Torsten 2024 年 8 月 1 日
But this error occurs in the last loop:
% select another 75% of new population
for j = 1:(Npop-mpop)
for bits=1:nsw
string(mpop +j,bits) = string(j,bits);
end
end
Before entering this loop, "string" has size 3x10. But j runs up to 10-3 = 7 ...

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDynamic System Models についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by