# Index exceeds matrix dimensions

1 view (last 30 days)
hasan damaj on 29 Sep 2019
Commented: hasan damaj on 29 Nov 2019
% flow m3/s
Q = 20;
% slope m/m
So = 0.0001;
% side slope m/m
z = 2;
% manning number
n = 0.015;
b = 10; % width of channel m
g = 9.81; % gravity force m/s2
N = 4;
ys = 1;
yend = 2;
dy = abs((ys-yend)/N);
y(1) = ys;
% A(1) = ;x
for i = 1:N+1
if i == 1
y(i) = ys;
else
y(i)= y(i-1) + dy;
end
A(i) = (b + y(i)*z)*(y(i));
P(i) = b + 2*y(i)*sqrt(1+z^2);
R(i) = A(i) / P(i);
V(i) = Q / A(i);
E(i) = y(i) + V(i)^2 / (2*g);
if i == 1;
dE(i) = 0;
else
dE(i) = E(i)-E(i-1);
end
dE
Se(i) = (V(i)^2)* (n^2)/(R(i)^(4/3))
if i > 1
Sav(i) = (Se(i) + Se(i+1))/2
else
Sav(i) = 0
end
if i > 1
dx = dE(i)/(So - Sav(i))
else
dx = 0
end
if i > 1
x (i) = dx(i) + dx(i-1);
else
x(i)= 0
end
end
its giving me on line where dE(i) =E(i) -E(i+1)
Sav(i) =(Se(i) + Se(i+1))/2
index exceed matrix dimension
How do i solve the issue???
thank you
hasan damaj on 30 Sep 2019
i already correct the continued and finished it.
if i want to put the variable of
y A P R V E dE Se Sav dx x
in a matrix in for of a table .. what is the required code.??
this process is called water surface profile using direct step method.(Civil Engineering).
also i need to plot the vales of x with respect to y.???
if you just help me i will be gratefull.
Adam Danz on 30 Sep 2019

Csaba on 29 Sep 2019
E(i) = y(i) + V(i)^2 / (2*g);
if i == 1;
dE(i) = 0;
else
,dE(i) = E(i)-E(i+1); ,
end
You are defining E(i) in the for loop, and later in the same for loop you are referencing to E(i+1) (before it was definied). Where the hell prograsm should know what E(i+1) would be in the next circle when you will define it?
This code is incorrect.
hasan damaj on 29 Nov 2019
hasan damaj on 29 Nov 2019
above a fortran code
how to transfer to matlab code?
thank you

Adam Danz on 30 Sep 2019
"if i want to put the variable of
y A P R V E dE Se Sav dx x
in a matrix in for of a table .. what is the required code.??"
Those variables are row vectors of equal length and can be concatenated vertically into a matrix like this:
out = [y;A;P;R;V;E;dE;Se;Sav;dx;x];
But to follow the principles of Tidy Data, each column of a matrix should be a variable and each row an observation. The matrix would be transposed.
out = [y;A;P;R;V;E;dE;Se;Sav;dx;x].';
% ^^
Better yet, I recommend using a table
T = array2table([y;A;P;R;V;E;dE;Se;Sav;dx;x].',...
'VariableNames',{'y','A','P','R','V','E','dE','Se','Sav','dx','x'})
"also i need to plot the vales of x with respect to y."
Assuming you've created the table above,
plot(T.x,T.y,'o-')
hasan damaj on 30 Sep 2019
Thank you mr Adam for the help.
but regarding the last code which is plot,
what is o-???
Adam Danz on 30 Sep 2019
It's the linespec of the plot
It plots with lines (-) and circle markers (o).

### Categories

Find more on Data Type Identification in Help Center and File Exchange

R2016a

### Community Treasure Hunt

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

Start Hunting!