Defining a matrix using empty parenthesis

Hi all,
Just a small problem with notation. I have the following for loop:
G = [];
W = [];
W(1) = 77000;
for i = 1:29
G = [G, SFC*Thrust1(i)*(disp(i)/V1(i))]
W = [W(i+1), (W(i)-G(i))]
end
I am getting the following error:
Index exceeds matrix dimensions.
Error in fueloptimal (line 139)
W = [W(i+1), (W(i)-G(i))]
I need to define W(i+1) using the empty parenthesis before the 'for loop', i.e. W = [ ]. Have I done this correctly? Or is the issue coming from somewhere else?
Thanks in advance!

 Risposta accettata

Image Analyst
Image Analyst il 22 Ott 2014
The problem is not only W(i+1). It's W(i). Defining W = [], which is null, does not mean that there is a first element, element #1. There is no element W(1). Null means nothing, not even a first element that is null. So you can't append/prepend anything to it. You can append to W if it's null, but not to W(1) or any other specific index number because they're not there yet.
And of course on the ith iteration there is no (i+1)th element either, because you haven't gotten there yet. When i = 1, why do you expect that a W(2) exists already? It doesn't.

3 Commenti

Zena Assaad
Zena Assaad il 23 Ott 2014
Modificato: Zena Assaad il 23 Ott 2014
I'm sorry, I should have specified that I have predefined W(1) as a positive constant before applying the for loop.
Oh, you're right - it is there. If you did that then there was no need to do W=[] just prior to it.
So the first time through your loop with i=1, you're doing W = [W(2), (W(1)-G(1))] but the problem is, on the first iteration there is no W2 yet!
Thank you I see the problem now!

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by