Can't seem to understand what my mistake is (Loading .mat files)
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Japnit Sethi
il 1 Ott 2020
Commentato: Japnit Sethi
il 1 Ott 2020
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/369475/image.jpeg)
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
1 Commento
Stephen23
il 1 Ott 2020
Modificato: Stephen23
il 1 Ott 2020
Why are you saving one variable per file? Your code would probably be simpler if you saved all of those variables in one file (tip: use the -struct option when saving, and always load into an output variable. Note that load also lets you select which variables to import from the file).
Risposta accettata
Stephen23
il 1 Ott 2020
Modificato: Stephen23
il 1 Ott 2020
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');
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!