donc j'ai créé l'interface graphique dans le guide qui ressemble à ceci:Passage des valeurs de boutons radio dans le script Matlab
Je veux accéder aux données de bouton radio, puis modifier les variables dans ma simulation (Bitrate et Modulation sont les groupes de boutons, l'amélioration est un bouton radio unique). Par exemple - dans la simulation j'ai une variable Rs=1e9
, donc quand le bouton 1Gbps est sélectionné, je veux qu'il reste 1e9, mais si le bouton 10Gbps est sélectionné, je veux qu'il change sa valeur à 10e9.
Ensuite, après avoir appuyé sur le bouton Démarrer, je veux démarrer ma simulation (qui se trouve dans un fichier .m différent) avec des paramètres donnés. Comment puis-je le faire? (Je sais à propos de l'idée de gérer dans matlab, mais je ne sais pas comment passer la valeur à la simulation)
C'est le code qui contrôle gui - généré par le guide. J'ai ajouté du code qui démarre la simulation et ferme la fenêtre gui.
function varargout = gui_final(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @gui_final_OpeningFcn, ...
'gui_OutputFcn', @gui_final_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before gui_final is made visible.
function gui_final_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin unrecognized PropertyName/PropertyValue pairs from the
% command line (see VARARGIN)
% Choose default command line output for gui_final
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes gui_final wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = gui_final_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in start.
function start_Callback(hObject, eventdata, handles)
% hObject handle to start (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
clc
close all
message = sprintf('Wait - this is a very long simulation!\nClick the OK button and wait');
uiwait(msgbox(message));
evalin('base', 'simulation');
% --- Executes on button press in dfe.
function dfe_Callback(hObject, eventdata, handles)
% hObject handle to dfe (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of dfe
% --- Executes on button press in ook.
function ook_Callback(hObject, eventdata, handles)
% hObject handle to ook (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of ook
Désolé, mais je ne comprends toujours pas comment transmettre ces données à le script avec la simulation. – dawzaw
Ok. J'ai oublié d'écrire que mon script n'était pas une fonction. Donc je le transforme en fonction. Mais en utilisant votre code, j'obtiens une autre erreur: 'switch get (get (handles.Bitrate, 'SelectedObject'), 'Tag') case 'onegbps', bitrate = 1e9; case 'tengbps', débit binaire = 10e9; fin message = sprintf ('Attendre - c'est une très longue simulation! \ NCliquez sur le bouton OK et attendez'); uiwait (msgbox (message)); evalin ('base', 'simulation (débit, modulation, vrai)'); L'erreur: 'Erreur lors de l'utilisation d'evalin Fonction non définie ou variable 'bitrate'' – dawzaw
Ok, j'ai corrigé votre réponse - evalin (' base ', [' simulation ('num2str (bitrate)') ']) – dawzaw