I try to run the program "Modeling Inverse Kinematics in a Robotic Arm"
l1 = 10; % length of first arm l2 = 7; % length of second arm theta1 = 0:0.1:pi/2; % all possible theta1 values theta2 = 0:0.1:pi; % all possible theta2 values [THETA1,THETA2] = meshgrid(theta1,theta2); % generate a grid of theta1 and theta2 values X = l1 * cos(THETA1) + l2 * cos(THETA1 + THETA2); % compute x coordinates Y = l1 * sin(THETA1) + l2 * sin(THETA1 + THETA2); % compute y coordinates data1 = [X(:) Y(:) THETA1(:)]; % create x-y-theta1 dataset data2 = [X(:) Y(:) THETA2(:)]; % create x-y-theta2 dataset plot(X(:),Y(:),'r.'); axis equal; xlabel('X','fontsize',10) ylabel('Y','fontsize',10) title('X-Y coordinates generated for all theta1 and theta2 combinations using forward kinematics formula','fontsize',10) opt = anfisOptions; opt.InitialFIS = 7; opt.EpochNumber = 150; opt.DisplayANFISInformation = 0; opt.DisplayErrorValues = 0; opt.DisplayStepSize = 0; opt.DisplayFinalResults = 0; disp('--> Training first ANFIS network.') anfis1 = anfis(data1,opt); disp('--> Training second ANFIS network.') opt.InitialFIS = 6; anfis2 = anfis(data2,opt); x = 0:0.1:2; % x coordinates for validation y = 8:0.1:10; % y coordinates for validation [X,Y] = meshgrid(x,y); c2 = (X.^2 + Y.^2 - l1^2 - l2^2)/(2*l1*l2); s2 = sqrt(1 - c2.^2); THETA2D = atan2(s2,c2); % theta2 is deduced k1 = l1 + l2.*c2; k2 = l2*s2; THETA1D = atan2(Y,X) - atan2(k2,k1); % theta1 is deduced
Until I run the coding below, I got error using evalfis
XY = [X(:) Y(:)]; THETA1P = evalfis(anfis1,XY); % theta1 predicted by anfis1 THETA2P = evalfis(anfis2,XY); % theta2 predicted by anfis2
The error that I get:
Error using evalfis (line 51) The second argument must be a FIS structure.
The error message indicates that the evalfis
function is expecting the first argument to be a trained Fuzzy Inference System (FIS) structure, but it received something else. In your code, the issue lies with how anfis1
and anfis2
are defined or trained.
Let’s resolve this step-by-step:
anfis1
and anfis2
The anfis
function should output a trained FIS structure if provided with valid data and options. In your case, check the anfis
training process:
anfis1 = anfis(data1, opt); anfis2 = anfis(data2, opt);
Make sure:
data1
and data2
are valid training datasets with at least 2 inputs and 1 output (3 columns).opt.InitialFIS
is properly defined. Setting it to 7
or 6
might be incorrect. Typically, you create an initial FIS structure using genfis
or provide an existing FIS.opt.InitialFIS
Instead of assigning numeric values (7
and 6
), initialize the FIS structure using genfis
. Here's an example:
% Generate an initial FIS for anfis1 fis1 = genfis(data1(:,1:2), data1(:,3)); % Inputs: X, Y; Output: THETA1 opt.InitialFIS = fis1; anfis1 = anfis(data1, opt); % Generate an initial FIS for anfis2 fis2 = genfis(data2(:,1:2), data2(:,3)); % Inputs: X, Y; Output: THETA2 opt.InitialFIS = fis2; anfis2 = anfis(data2, opt);
This ensures that the anfis
function has a valid FIS to start with.
evalfis
Once you have trained FIS structures (anfis1
and anfis2
), you can use them in evalfis
:
XY = [X(:) Y(:)]; THETA1P = evalfis(anfis1, XY); % Predict THETA1 THETA2P = evalfis(anfis2, XY); % Predict THETA2
If you still face issues:
Use disp
or class
to check the type of anfis1
and anfis2
after training:
disp(class(anfis1));
If the class is not mamfis
or sugfis
(FIS structures), then training failed.
Inspect the training datasets (data1
and data2
) for correctness:
data1
and data2
must have at least three columns.By ensuring anfis1
and anfis2
are valid trained FIS structures, you should be able to use evalfis
without errors. Let me know if you encounter any specific issues during these steps!
Matlabsolutions.com provides guaranteed satisfaction with a
commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain
experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support
to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been
empanelled after extensive research and quality check.
Matlabsolutions.com provides undivided attention to each Matlab
assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services
include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work
done at the best price in industry.