Index in position 1 is invalid. Array indices must be positive integers or logical values.
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I am getting the following error message: Index in position 1 is invalid. Array indices must be positive integers or logical values.
can anyone please explain me how to fix it ? or help me please to fix it ?
my code :
clear all; clc;
n = 1000;
jumlah_tempat_tidur_transisi = 16;
lambda = 300;
tipe_pasien = randi([0 1],1,n); % 0=Bergejala , 1=Tidak Bergejala
waktu_antar_kedatangan_pasien = poissrnd(lambda,1,n);
waktu_kedatangan_pasien(1) = waktu_antar_kedatangan_pasien(1);
for i=1:n-1
waktu_kedatangan_pasien(i+1) = waktu_kedatangan_pasien(i)+waktu_antar_kedatangan_pasien(i+1);
end
tidak_bergejala = 0;
tb = 1; %index
for i=1:length(waktu_kedatangan_pasien)
if tipe_pasien(i)==1
waktu_kedatangan_pasien(i) = waktu_kedatangan_pasien(i)+60;
indeks_tidak_bergejala(tb) = i;
tb = tb+1; %index
tidak_bergejala = tidak_bergejala+1;
end
end
peluang_tes=binornd(tidak_bergejala,0.5);
positif=0;
hasil_tes=zeros(1,tidak_bergejala);
for i=1:length(indeks_tidak_bergejala)
hasil_tes(indeks_tidak_bergejala(i))=randi([0,1],1,1);
if positif<peluang_tes && hasil_tes(indeks_tidak_bergejala(i))==0
positif=positif+1;
else
hasil_tes(indeks_tidak_bergejala(i))=1;
waktu_kedatangan_pasien(indeks_tidak_bergejala(i))=0;
end
end
waktu_kedatangan_pasien=sort(waktu_kedatangan_pasien);
q=1;
for i=1:length(waktu_kedatangan_pasien)
if waktu_kedatangan_pasien(i)~= 0
waktu_kedatangan_pasien_ke_transisi(q)=waktu_kedatangan_pasien(i);
q=q+1;
end
end
kamar_kosong=0;
kamar_terpakai=zeros(1,jumlah_tempat_tidur_transisi);
kamar_terisi=zeros(1,jumlah_tempat_tidur_transisi);
antrian_perkamar=zeros(1,jumlah_tempat_tidur_transisi);
waktu_tunggu_pasien=zeros(1,length(waktu_kedatangan_pasien_ke_transisi));
waktu_antri=zeros(2,jumlah_tempat_tidur_transisi);
waktu_pelayanan_transisi=poissrnd(1440,1,length(waktu_kedatangan_pasien_ke_transisi));
for i=1:length(waktu_kedatangan_pasien_ke_transisi)
for nn=1:jumlah_tempat_tidur_transisi
if kamar_terpakai(nn)>0
kamar_terpakai(nn)=kamar_terpakai(nn)-(waktu_kedatangan_pasien_ke_transisi(i)-waktu_kedatangan_pasien_ke_transisi(i-1));
if kamar_terpakai(nn)<=0
kamar_terpakai(nn)=kamar_terpakai(nn)+waktu_antri(1,nn);
for a=1:size(waktu_antri,1)
if a==size(waktu_antri,1)
waktu_antri(a,nn)=0;
else
waktu_antri(a,nn)=waktu_antri(a+1,nn);
end
end
antrian_perkamar(nn)=antrian_perkamar(nn)-1;
end
end
end
jml_waktu_antri=sum(waktu_antri);
for qw=1:jumlah_tempat_tidur_transisi
nk=jumlah_tempat_tidur_transisi-qw+1;
if kamar_terpakai(nk)<=0 && antrian_perkamar(nk)==0
nomor_kamar_kosong=nk;
kamar_kosong=1;
end
end
if kamar_kosong==1
kamar_terpakai(nomor_kamar_kosong)=kamar_terpakai(nomor_kamar_kosong)+waktu_pelayanan_transisi(nomor_kamar_kosong);
else
sembarang=jml_waktu_antri+kamar_terpakai;
[waktu_tunggu_pasien(i),dsini]=min(sembarang);
antrian_perkamar(dsini)=antrian_perkamar(dsini)+1;
waktu_antri(antrian_perkamar(dsini),dsini)=waktu_pelayanan_transisi(i);
end
kamar_kosong=0;
waktu_sistem_transisi=waktu_tunggu_pasien+waktu_pelayanan_transisi;
end
Error in line 90
0 Kommentare
Antworten (1)
Walter Roberson
am 10 Apr. 2022
for i=1:length(waktu_kedatangan_pasien_ke_transisi)
i starts out at 1.
for nn=1:jumlah_tempat_tidur_transisi
if kamar_terpakai(nn)>0
kamar_terpakai(nn)=kamar_terpakai(nn)-(waktu_kedatangan_pasien_ke_transisi(i)-waktu_kedatangan_pasien_ke_transisi(i-1));
when i is 1, then waktu_kedatangan_pasien_ke_transisi(i-1) is waktu_kedatangan_pasien_ke_transisi(1-1) which is a request to index at 0.
1 Kommentar
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!