Matrix dimensions must agree
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I am using Forward Euler to solve based on the given condtions that H'=(S-S(f))/(1-F^2) F^2=(q^2)/(gH^3) S(f)=C(f)F^2 and H(x(1))=H(1).
I am getting the error "Matrix dimensions must agree" for line 17.
What does that mean?
clc; clear all;
h=1000; % step size
xmin=-10000;
xmax=10000;
x=xmin:h:xmax; %x boundaries
n=length(x);
y=zeros(1,n);% Initial condition
x0=0;
q=10;
s=0.00025;
H(1)=30;
Cf=.00200;
g=9.8;
i=1:n-1;
F=sqrt((q^2)/(g*H^3));
s(i+1)=Cf*(F);
dH=(s-s(i+1))/((1-F));
for i=1:n-1
x(i+1)=i*h;
y(i+1)=y(i)+h*dH;
end
figure
hold on
plot (x,y,'r', 'linewidth',2)
xlabel ('Channel Distance(m)')
ylabel ('Water Elevation(m)')
title ('Water Elevation vs Channel Distance')
3 comentarios
Star Strider
el 9 de Oct. de 2019
Kolleggerm1’s Answers moved here —
First:
h=1000;
xmin=-10000;
xmax=10000;
x=xmin:h:xmax;
n=length(x);
H=zeros(1,n);
x0=0;
q=10;
s=0.00025;
H(1)=30;
Cf=.00200;
g=9.81;
i=1:n-1;
slope=(s-(Cf(q.^2)/(g(H(i).^3))))/(1-((q.^2)/(g(H(i).^3))));
for i=1:n-1
x(i+1)=x(i)-h;
H=H(i-1)-slope*h;
end
figure
hold on
plot (x,H,'r', 'linewidth',2)
xlabel ('Channel Distance(m)')
ylabel ('Water Elevation(m)')
title ('Water Elevation vs Channel Distance')
Second:
I was able to fix the original error and am now getting this one (for the above code)
Index exceeds the number of array elements (1).
Error in Alltogether (line 15)
slope=(s-(Cf(q.^2)/(g(H(i).^3))))/(1-((q.^2)/(g(H(i).^3))));
Star Strider
el 9 de Oct. de 2019
You are missing a number of (probably multiplication) operators here:
slope=(s-(Cf(q.^2)/(g(H(i).^3))))/(1-((q.^2)/(g(H(i).^3))));
I used this:
slope=(s-(Cf*(q.^2)./(g*(H(i).^3))))./(1-((q.^2)./(g*(H(i).^3))));
that eliminated that error, however your code now has others with respect to ‘x’ and ‘H’ not having equal lengths in the plot call.
Respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!