Hi i have following code which shows some error how i solve it plzz help

1 vue (au cours des 30 derniers jours)
dwivedi shriprakash
dwivedi shriprakash le 15 Fév 2018
Commenté : Walter Roberson le 20 Fév 2018
clear all
clc
syms t x y
%points to define the bezier curve
Px = [10 50 60 70];
Py = [30 60 0 20];
%equation of bezier curve
Pxx = Px(1)*(1-t).^3 + 3*Px(2)*t.*(1-t).^2 + 3*Px(3)*(1-t).*t.^2 + Px(4)*t.^3;
Pyy = Py(1)*(1-t).^3 + 3*Py(2)*t.*(1-t).^2 + 3*Py(3)*(1-t).*t.^2 + Py(4)*t.^3;
Pxd = diff(Pxx);
Pyd = diff(Pyy);
%evaluating points of bezier curve
t=0:0.1:1;
Pxx = Px(1)*(1-t).^3 + 3*Px(2)*t.*(1-t).^2 + 3*Px(3)*(1-t).*t.^2 + Px(4)*t.^3;
Pyy = Py(1)*(1-t).^3 + 3*Py(2)*t.*(1-t).^2 + 3*Py(3)*(1-t).*t.^2 + Py(4)*t.^3;
%calculating slope of normal at any point
X = subs(Pxd,t);
Y = subs(Pyd,t);
M = -(X./Y);
%offset distance (radius of tool/2)
D = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2];
%unit vector in direction of normal
R = sqrt(1+(M.^2));
%coordinates of pt A
Xa = Pxx+(D./R);
Ya = Pyy+((D.*M)./R);
%coordinates of point C (centre of circle)
Xc = Pxx+(-D./R);
Yc = Pyy+((-D.*M)./R);
%evaluating the intersection circle and line from above point to next point
for t=0:1:10
[L] = solve(((x - Xc)).^2) +(((y - Yc)).^2)-16, (y - Pyy(t))-(((Pyy(t+1)-Pyy(t))./(Pxx(t+1)-Pxx(t))).*(x - Pxx(t)));
Lx = L.x;
Ly = L.y;
%coordinates of point B
Xb = Lx;
Yb = Ly;
%slopes of lines from C to B and from C to A
M1 = (Yb-Yc)/(Xb-Xc);
M2 = (Ya-Yc)/(Xa-Xc);
%Angle of above lines
Theta(t) = atand(double(M1));
Theta(t+1) = atand(double(M2));
%cutter engagement angle
Alpha = Theta(t+1)-Theta(t);
end

Réponses (2)

Walter Roberson
Walter Roberson le 15 Fév 2018
Change
t=0:0.1:1;
To
T=0:0.1:1;
Then where you have subs(expression, t) use subs(expression, t, T)
Later replace
for t=0:1:10
With
for t=1:length(T)
  3 commentaires
dwivedi shriprakash
dwivedi shriprakash le 19 Fév 2018
Error using mupadmex Error in MuPAD command: Array sizes must match.
Error in sym/privBinaryOp (line 820) Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
Error in + (line 7) X = privBinaryOp(A, B, 'symobj::zip', '_plus');
Walter Roberson
Walter Roberson le 19 Fév 2018
I had to make a lot of guesses about what you are actually trying to do. I didn't bother trying to figure out why, as I suspect your equations are not set up well. I did not try to fix the math: I just fixed the sizes. The code is attached.
In your line
M = -(X./Y);
is M intended to be a slope? Because slope is delta Y divided by delta X, not delta X divided by delta Y.

Connectez-vous pour commenter.


Basil C.
Basil C. le 19 Fév 2018
There are some errors that I could find
  • The slope is change in Y by change in X
M = -(X./Y)
  • You cannot have index values starting from zero. So
for t=0:1:10
Should be changed to
for t=1:1:10
  • While using the solve function I don't think you can use Xc and Yc directly since they are an array . So change
[L] = solve(((x - Xc)).^2) +(((y - Yc)).^2)-16,...
(y - Pyy(t))-(((Pyy(t+1)-Pyy(t))./(Pxx(t+1)-Pxx(t))).*(x - Pxx(t)));
To
[L] = solve(((x - Xc(t))).^2) +(((y - Yc(t))).^2)-16,...
(y - Pyy(t))-(((Pyy(t+1)-Pyy(t))./(Pxx(t+1)-Pxx(t))).*(x - Pxx(t)));
Where I have used Yc(t) and Xc(t) rather than just Yc and Xc. This maybe wrong so make the changes accordingly
  • Again you cannot subtract matrix with unequal sizes in
M1 = (Yb-Yc)/(Xb-Xc);
M2 = (Ya-Yc)/(Xa-Xc);
So change it to something like:
M1 = (Yb(t)-Yc(t))/(Xb(t)-Xc(t));
M2 = (Ya(t)-Yc(t))/(Xa(t)-Xc(t));
  2 commentaires
dwivedi shriprakash
dwivedi shriprakash le 20 Fév 2018
Error using sym/subsref Too many output arguments. wt next?
Walter Roberson
Walter Roberson le 20 Fév 2018
What next? Well you could try the complete code that I attached to my answer. You should review it though as you had a syntax error that I had to guess at the meaning of. The code I posted should be quite clear as to how the sub expressions are built up: always write for clarity first and then if you ever need to combine parts for efficiency you will have a model to compare against to be sure that you get the brackets right.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by