Index exceeds matrix dimensions

1 visualizzazione (ultimi 30 giorni)
hasan damaj
hasan damaj il 29 Set 2019
Commentato: hasan damaj il 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
  6 Commenti
hasan damaj
hasan damaj il 30 Set 2019
Mr. Adam,
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
Adam Danz il 30 Set 2019
See answer.

Accedi per commentare.

Risposta accettata

Csaba
Csaba il 29 Set 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.
  7 Commenti
hasan damaj
hasan damaj il 29 Nov 2019
above a fortran code
how to transfer to matlab code?
thank you

Accedi per commentare.

Più risposte (1)

Adam Danz
Adam Danz il 30 Set 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-')
  2 Commenti
hasan damaj
hasan damaj il 30 Set 2019
Thank you mr Adam for the help.
but regarding the last code which is plot,
what is o-???
Adam Danz
Adam Danz il 30 Set 2019
It's the linespec of the plot
It plots with lines (-) and circle markers (o).

Accedi per commentare.

Tag

Prodotti


Release

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by