Plot Error: Vectors should be the same length
Ältere Kommentare anzeigen
So basically guys, please help.
I don't understand, I am writing a script which should plot a graph.
When I use it independently, it works: (here is the script)
x = -10:0.01:10;
plot(x,q1,'g',x,q2,'r'),
axis([-3 3 -3 3])
x = linspace(c(1),c(2),10);
qq1 = -0.34+1.69*(x-0.25).^2;
qq2 = 1.76-0.77*(x-0.71).^2;
xb = [x,x];
yb = [qq1,qq2];
fill(xb,yb,'b')
hold on
xr = [x,x];
yr = [qq2,qq1];
fill(xr,yr,'b')
legend('q1 (x)', 'q2 (x)'),
xlabel('x'), ylabel('q (x)'),
However, the problem arises when I put it together With the rest of the script, sym x;
q1 = -0.34+1.69*(x-0.25).^2;
q2 = 1.76-0.77*(x-0.71).^2;
%find the points of intersection
syms x
equation = -0.34+1.69*(x-0.25).^2 - 1.76+0.77*(x-0.71).^2 == 0;
S = solve(equation,x);
c = double(S)
%find the area of the intersection
f = -0.34+1.69*(x-0.25).^2 - 1.76+0.77*(x-0.71).^2;
z = int(f, c(1), c(2));
w = abs(z);
display('Area: '), disp(double(w));
%plot the graph
x = -10:0.01:10;
plot(x,q1,'g',x,q2,'r'),
axis([-3 3 -3 3])
x = linspace(c(1),c(2),10);
qq1 = -0.34+1.69*(x-0.25).^2;
qq2 = 1.76-0.77*(x-0.71).^2;
xb = [x,x];
yb = [qq1,qq2];
fill(xb,yb,'b')
hold on
xr = [x,x];
yr = [qq2,qq1];
fill(xr,yr,'b')
legend('q1 (x)', 'q2 (x)'),
xlabel('x'), ylabel('q (x)'),
and I run the script and get this error:
Error using plot
Vectors must be the same length.
Error in Matlab_01 (line 21)
plot(x,q1,'g',x,q2,'r'),
Can somebody please help find where I am making the mistake? Thank you beforehand.
1 Kommentar
Adam
am 24 Mär. 2017
Please format code in a Code { } block in future. It makes it so much easier to read. And whilst I am in favour of blank lines around code to break it up I think every other line being blank does not aid readability!
Antworten (2)
You seem to keep reusing 'x'. I see 3 different places where it is redefined. The final one seems to make it a vector of length 10, whereas q1 is of an unknown length as it appears to be the first line of the script based on whatever x was at the time which might well have been:
x = -10:0.01:10;
You can use the debugger to very easily see these things. Either with a breakpoint on the relevant line you want to stop at or using the 'Stop on errors' option from the Breakpoints menu.
Star Strider
am 24 Mär. 2017
Try this:
figure
fplot(q1, [min(x) max(x)], 'g')
hold on
fplot(q2, [min(x) max(x)], 'r')
hold off
axis([-3 3 -3 3])
Use ezplot if you do not have fplot. They should produce the same results here.
Kategorien
Mehr zu Spline Postprocessing finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!