Matlab Error "Attempted to access -- ; index out of bounds because numel--=???.

12 Ansichten (letzte 30 Tage)
Phoebe
Phoebe am 27 Feb. 2014
Beantwortet: Shuba Nandini am 12 Nov. 2024 um 5:49
If my code looks like the following;
time=0; %Initialise time
particleno=9
dt=0.01;
tfinal=40;
diagstep=10;
diagcounter=0;
while time<tfinal
tie=time+dt;
if ((int8(time/diagstep) * diagstep) == int8(time))
[xcounter] = ParticleCounterFun(x0, particleno);
diagcounter=diagcounter+1;
end
Xtcounter(diagcounter)=xcounter(diagcounter);
end %End while time<tfinal LOOP
the FUNCTION FILE FOR PARTICLECOUNTERFUN IS;
function [ xcounter ] = ParticleCounterFun( x0, particleno )
%Initialise counters used in E field diagnostics
counter01=0;
counter12=0;
counter23=0;
counter34=0;
counter45=0;
for np=1:particleno
if (0<=x0(np) & x0(np)<1)
counter01=counter01+1;
end
if (1<=x0(np) & x0(np)<2)
counter12=counter12+1;
end
if (2<=x0(np) & x0(np)<3)
counter23=counter23+1;
end
if (3<=x0(np) & x0(np)<4)
counter34=counter34+1;
end
if (4<=x0(np) & x0(np)<5)
counter45=counter45+1;
end
end
xcounter=[counter01 counter12 counter23 counter34 counter45];
end
Anyway i get this;
>> ParticlePusher Attempted to access xcounter(6); index out of bounds because numel(xcounter)=5.
Error in ParticlePusher (line 101) Xtcounter(diagcounter)=xcounter(diagcounter);
Help please!

Antworten (1)

Shuba Nandini
Shuba Nandini am 12 Nov. 2024 um 5:49
Hi Phoebe,
The indexing error occurred because the 'Xtcounter' object is trying to access an element of 'xcounter' that does not exist. The xcounter variable depends on the value of the 'diagcounter' variable, which may have caused the error.
To resolve the indexing error in the code, kindly modify your code as shown below:
% Initialize array to store xcounter values at each diagnostic step
Xtcounter = [];
while time < tfinal
time = time + dt; % Update time in each loop
if ((int8(time / diagstep) * diagstep) == int8(time))
xcounter = ParticleCounterFun(x0, particleno);
% Increment diagnostic counter and store xcounter in Xtcounter
diagcounter = diagcounter + 1;
Xtcounter(diagcounter, :) = xcounter;
end
end
I have modified the code to ensure that each xcounter array is stored as a row in Xtcounter for every diagnostic step, rather than attempting to access individual elements.
I hope the above provided code will help you to resolve the issue!

Kategorien

Mehr zu Colormaps 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!

Translated by