푸시 버튼을 누르면 .m 파일을 실행하는 앱 디자이너를 사용하여 앱을 디자인했습니다. 그러나 그 실행 전에 일부 xlsx 파일을 찾아보고 일부 변수에 데이터를 저장하고 assignin
함수를 사용하여 해당 변수를 내보내고 있습니다. 이 변수는 차례로 스크립트 (.m 파일)에서 사용되지만 내가 관찰 한 것은이 변수가 현재 작업 공간과 다른 기본 작업 공간에 존재한다는 것입니다. 현재 작업 공간으로 전달할 수있는 방법이 있습니까?
assignin("base",'name',name2)
이것은 단지 트레일 GUI입니다.
classdef app < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
ContinueButton matlab.ui.control.Button
Button matlab.ui.control.Button
Button2 matlab.ui.control.Button
Button3 matlab.ui.control.Button
end
% Callbacks that handle component events
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
%app.ds
%uiwait(app.UIFigure);
end
% Button pushed function: ContinueButton
function ContinueButtonPushed(app, event)
name = 'string';
assignin("base",'name',name)
run("trail.m")
closereq
%set(handle.Operation)
end
% Close request function: UIFigure
function UIFigureCloseRequest(app, event)
delete(app)
%uiresume(app.UIFigure);
end
end
% Component initialization
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure and hide until all components are created
app.UIFigure = uifigure('Visible', 'off');
app.UIFigure.Position = [100 100 640 480];
app.UIFigure.Name = 'MATLAB App';
app.UIFigure.CloseRequestFcn = createCallbackFcn(app, @UIFigureCloseRequest, true);
app.UIFigure.Pointer = 'hand';
% Create ContinueButton
app.ContinueButton = uibutton(app.UIFigure, 'push');
app.ContinueButton.ButtonPushedFcn = createCallbackFcn(app, @ContinueButtonPushed, true);
app.ContinueButton.Position = [164 106 262 92];
app.ContinueButton.Text = 'Continue';
% Create Button
app.Button = uibutton(app.UIFigure, 'push');
app.Button.Position = [454 254 100 22];
% Create Button2
app.Button2 = uibutton(app.UIFigure, 'push');
app.Button2.Position = [104 254 100 22];
app.Button2.Text = 'Button2';
% Create Button3
app.Button3 = uibutton(app.UIFigure, 'push');
app.Button3.Position = [301 335 100 22];
app.Button3.Text = 'Button3';
% Show the figure after all components are created
app.UIFigure.Visible = 'on';
end
end
% App creation and deletion
methods (Access = public)
% Construct app
function app = app
% Create UIFigure and components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
% Execute the startup function
runStartupFcn(app, @startupFcn)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end
이것은 trail.m 스크립트 파일입니다.
%%%%%%%%%%%%%%%%%%%% trail.m %%%%%%%%%%%%%%%%%%%%%%%
clc;clear
suma = 90;
sumb = 100;
total = suma+sumb;
disp(name);
변수 나 assignin
.
작업 공간에서 직접 변수를 할당하려고 시도하는 대신 (고급의 깨지기 쉬운 기술), 참조에 의한 전달 handle
스타일 객체를 사용하여 주 함수와 GUI 콜백간에 값을 앞뒤로 전달 하는 것이 좋습니다 . containers.Map
(이 핸들이기 때문에) 객체는 트릭을 할 것입니다, 또는 당신이 사용하여 사용자 정의 클래스를 정의 할 수 있습니다 classdef MySharedData < handle
. 호출 함수에서 개체를 만들고 변수에 저장합니다. 그런 다음 GUI 콜백 함수에 표시되는 Figure 핸들 중 하나의 appdata에 개체를 붙입니다. 데이터를 호출 / 주 함수로 다시 전달하려면 GUI 콜백이 공유 핸들 객체에 값 / 속성을 할당하거나 업데이트하도록합니다.
또는 GUI 핸들의 appdata에 직접 값을 붙일 수 있습니다. 그것들은 핸들 역할도하며, 이것은 호출 함수와 GUI 콜백 사이에서 데이터를 앞뒤로 전달하는 전통적인 Matlab 방식입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다