
Index exceeds matrix dimensions
    5 ビュー (過去 30 日間)
  
       古いコメントを表示
    
% 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 件のコメント
採用された回答
  Csaba
      
 2019 年 9 月 29 日
            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 件のコメント
その他の回答 (1 件)
  Adam Danz
    
      
 2019 年 9 月 30 日
        "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 件のコメント
  Adam Danz
    
      
 2019 年 9 月 30 日
				It's the linespec of the plot
It plots with lines (-) and circle markers (o).
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



