Index in position 2 exceeds array bounds
Ältere Kommentare anzeigen
Hello,
i'm trying to add values to an already existing array (Profile_y). The last value of Profile_x is lager than the last value of Profile_y. I am calculating the difference and divide it by the average step size of the values to get the number of how many steps i need to add. After that i try to add the average stepsize MissingSteps-times to the vector, so that Profile_x and Profile_y should have the same endvalue after all.
Instead i'm getting the error:
Index in position 2 exceeds array bounds
The end operator must be used within an array index expression.
My code:
MissingSteps = floor((Profile_x(1,end) - Profile_y(1,end)) ./ (mean(diff(Profile_y))));
Profile_Y_new = [Profile_Y];
% Profile_Y_new(1,end+1:numel(Profile_Y_new) + MissingSteps) = 0;
k = 1;
for i = 1:MissingSteps
Profile_Y_new(1,end+k) = Profile_Y_new(1,end+k-1) + (mean(diff(Profile_Y)));
while k <= MissingSteps
k = k + 1;
end
end
8 Kommentare
LM
am 15 Feb. 2021
Walter Roberson
am 15 Feb. 2021
Which line is the problem occuring on?
What is class(Profile_x) and class(Profile_y) ?
while k <= MissingSteps
k = k + 1;
end
What is the point of that? Why not just do
k = MissingSteps + 1;
LM
am 15 Feb. 2021
Walter Roberson
am 15 Feb. 2021
MissingSteps = floor((Profile_x(1,end) - Profile_y(1,end)) ./ (mean(diff(Profile_y))));
Profile_Y_new = [Profile_Y];
% Profile_Y_new(1,end+1:numel(Profile_Y_new) + MissingSteps) = 0;
k = 1;
for i = 1:MissingSteps
Profile_Y_new(1,end+k) = Profile_Y_new(1,end+k-1) + (mean(diff(Profile_Y)));
if k <= MissingSteps
k = k + 1;
else
break; %stop when enough has been filled
end
end
Walter Roberson
am 15 Feb. 2021
Use the command
dbstop if error
and run the code. When it stops at that line, please ask it to display
class(Profile_Y_new)
class(Profile_Y)
which end
which mean
which diff
Walter Roberson
am 15 Feb. 2021
Those look okay.
When you are stopped at the error line, please command
Profile_Y_new(1,end+k-1)
(mean(diff(Profile_Y)))
Profile_Y_new(1,end+k) = 12345
and see where the error comes up. If it does not come up at all, try putting in the full line
Profile_Y_new(1,end+k) = Profile_Y_new(1,end+k-1) + (mean(diff(Profile_Y)));
and seeing what happens.
I'm wondering whether you have a syntax error in your program somewhere, an extra end statement, a [ opened that is not closed, something like that.
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Matrix Indexing finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!