MATLAB: Can’t seem to understand what the mistake is (Loading .mat files)

loadMATLABplotsave

So I had saved .mat files from my 2 Matlab codes and now loading into a new Matlab File for a comparison plot!
But I am getting an error that it is an "unrecognized function or variable", when I can clearly see the variable in my workspace
All the files ae attached!!
clear all;
close all;
clc;
% Comparison Plot
filenames = {'q_Theta_Y.mat','q_dot_Theta_Y.mat','q_Y_Theta.mat', 'q_dot_Y_Theta.mat',...
'q_ref.mat', 'q_ref_dot.mat', 'Time.mat',...
'E_pos_Theta_Y.mat','E_vel_Theta_Y.mat','E_pos_Y_Theta.mat', 'E_vel_Y_Theta.mat'};
for kk = 1:numel(filenames)
load(filenames{kk})
end
%--------------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%% Plot results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%--------------------------------------------------------------------------
% Plot Comparison b/w q_ref1 and q1 (Position of Link 1)
set(figure,'Color','white')
subplot(2,2,1)
plot(Time,q_Theta_y(:,1),'b-',Time,q_ref(:,1),'k-.','LineWidth',2);
grid on
grid minor
hold on
plot(Time, q_Y_Theta(:,1), 'r-', Time,'LineWidth',2);
axis tight
title('Link 1: actual and reference trajectory', 'fontsize', 20);
xlabel('$$t \, {\rm [s]}$$', 'interpreter','latex','fontsize', 20);
ylabel('$$Position (m)$$', 'interpreter','latex', 'fontsize', 20);
% xlim([0 t_net(length(t_net))]);
% ylim([-1.2 1.2]);
legend('$$q_1$$($$\Theta \cdot Y$$)', '$$q_{1,{\rm ref}}$$', '$$q_1$$($$Y \cdot \Theta$$)',...
'interpreter','latex','fontsize',25);
hold off

Best Answer

  • The bug is very simple: your code refers to
    q_Theta_y
    but the variable in the mat file is named
    q_Theta_Y
    You need to use the correct case (variable names are case-sensitive).
    Much better would be to replace all of those separate files with one mat file and load into an output variable (which is a scalar structure), e.g.:
    F = absolute or relative path of the mat file.
    S = load(F);
    Note that you can select which variables you want to import, e.g.:
    S = load(F,'Time','q_Theta_Y');