Export to Excel from MATLAB GUIDE GUI (user defines filename and directory)

2 visualizzazioni (ultimi 30 giorni)
I'm trying to export data saved from a Simulink simulation to Excel using 'xlswrite'. I have used the following code to export data to Excel successfully:
evalString = 'xlswrite(''vehicle_Data'',x_data,''Sheet 1'',''A1'')';
evalin('base', evalString)
However, each time I click the export button in my GUI, it overwrites the previous Excel file. Ideally, I would like the user to be prompted to enter a filename and location after clicking the export button within my GUI. I'm also aware of uiputfile which I've attempted to use, however each time I try to export the data, an error occurs:
Undefined function or variable 'x_data'.
Please see my code below which overwrites each time. Even if i could get the code to rename the file each time, that would work as long as I can access previous exported simulation data.
% --- Executes on button press in export_data.
function export_data_Callback(hObject, eventdata, handles)
% hObject handle to export_data (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%x
evalString = 'xlswrite(''vehicle_Data'',x_data,''Sheet 1'',''A1'')';
evalin('base', evalString)
%y
evalString = 'xlswrite(''vehicle_Data'',y_data,''Sheet 2'',''A1'')';
evalin('base', evalString)
%accel
evalString = 'xlswrite(''vehicle_Data'',accel_data,''Sheet 3'',''A1'')';
evalin('base', evalString)
%Velocity
evalString = 'xlswrite(''vehicle_Data'',velocity_data,''Sheet 4'',''A1'')';
evalin('base', evalString)
I hope you can help!

Risposte (1)

Dennis
Dennis il 30 Ago 2018
Every function has its own workspace. Your function does not know x_data, y_data, accel_data and velocity_data. There are several ways to pass variables between callbacks and for more details about this topic please read this article ( link).
It seems that your are working with GUIDE, so you could append your variables to your handles structure. I am missing the part of your code were your variables origin from, it could look like this:
function MyDataCreation(hObject,event,handles)
handles.x_data=1:3;
handles.y_data=4:6;
handles.accel_data=7:9;
handles.velocity_data=10:12;
guidata(hObject,handles)
end
In your export function:
function export_data_callback(hObj, event, handles)
handles=guidata(hObj);
%now you can use handles.x_data, handles.y_data ...
%rest of your code
%
end
You can either use uiputfile or inputdlg to ask for a filename.
As soon as you have your variables in your function there is no need to use evalin anymore.

Categorie

Scopri di più su Data Import from MATLAB in Help Center e File Exchange

Prodotti


Release

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by