Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
simulink在gui-matlab中的运行_Matlab_User Interface_Simulink - Fatal编程技术网

simulink在gui-matlab中的运行

simulink在gui-matlab中的运行,matlab,user-interface,simulink,Matlab,User Interface,Simulink,我有一个Gui和一个Simulink模型,我想在Gui的文本字段中输入一些值,然后按开始按钮,我的Simulink模型应该获取这些值并运行,结果应该显示在Gui文本中 为了模拟:我必须不断地使用积木,它们的名字是卡夫和弗莱切。分为k和f两部分的桨速计 现在我想在gui中编辑k和f的值。这是我的代码: function kraft_Callback(hObject, eventdata, handles) kraft_value = str2num(get(hObject,

我有一个Gui和一个Simulink模型,我想在Gui的文本字段中输入一些值,然后按开始按钮,我的Simulink模型应该获取这些值并运行,结果应该显示在Gui文本中

为了模拟:我必须不断地使用积木,它们的名字是卡夫和弗莱切。分为k和f两部分的桨速计

现在我想在gui中编辑k和f的值。这是我的代码:

      function kraft_Callback(hObject, eventdata, handles)
      kraft_value = str2num(get(hObject,'String')); 
     if (isempty(kraft_value)) 
     set(hObject,'String','0') 
     end 
      guidata(hObject, handles); 

     function flaeche_Callback(hObject, eventdata, handles)
     flaeche_value = str2num(get(hObject,'String')); 
     if (isempty(flaeche_value)) 
     set(hObject,'String','0') 
      end 
     guidata(hObject, handles);

     function start_Callback(hObject, eventdata, handles)
     k= str2double(get(hObject,'string'));
     f= str2double(get(hObject,'string'));
     sim('Steifigkeit');


    function static_CreateFcn(hObject, eventdata, handles)
但我有以下错误:

     Error using Gui>start_Callback (line 215)
      Error due to multiple causes.

    Error in gui_mainfcn (line 96)
    feval(varargin{:});

      Error in Gui (line 17)
     gui_mainfcn(gui_State, varargin{:});

        Error in                     @(hObject,eventdata)Gui('start_Callback',hObject,eventdata,guidata(hObject))


      Caused by:
     Error using Gui>start_Callback (line 215)
    Error evaluating parameter 'Value' in 'Steifigkeit/f'
    Error using Gui>start_Callback (line 215)
    Undefined function or variable 'f'.
    Error using Gui>start_Callback (line 215)
    Error evaluating parameter 'Value' in 'Steifigkeit/k'
    Error using Gui>start_Callback (line 215)
    Undefined function or variable 'k'.

有人能帮我吗运行模拟的命令语法的一般形式是:

SimOut = sim('model', Parameters)
因此,通过这种方式,您可以在任何地方使用命令运行simulink模型。您还可以将参数添加到模型并运行它

以下示例显示如何创建配置集并将其与sim语法一起使用

model = 'vdp';
load_system(model)
simMode = get_param(model, 'SimulationMode');
set_param(model, 'SimulationMode', 'rapid')
cs = getActiveConfigSet(model);
model_cs = cs.copy;
set_param(model_cs,'AbsTol','1e-5',...
         'SaveState','on','StateSaveName','xoutNew',...
         'SaveOutput','on','OutputSaveName','youtNew')
simOut = sim(model, model_cs);
set_param(model, 'SimulationMode', simMode)
所以你只需要替换textbox中的值,就是这样

我通常使用它在simulink中设置一个值:

Control_Gains(1,1)=str2double(get_param([ModelName,'/PID1/PIDx'],'P'));
或:


我认为Simulink正在基本工作区中寻找
k
f
,但它们仅在回调函数工作区中定义。您可能需要使用:


我不知道您的GUI是如何构造的,但在我看来,基于您的代码,k和f看起来是相同的。这就是你的本意吗?

我浏览了你的代码,但似乎没有函数可以更新常量块。。我已经创建了一个类似的GUI来在运行时调优输入。 尝试以下方法:

在GUI中编辑框的回调中,编写以下命令

valstr=get(hObject,'String');
val=str2double(valstr);
assignin('base','nameofvariableinmatlabworkspace',val);
set_param('constantblockpath','Value','nameofvariableinmatlabworkspace');
将nameofvariableinmatlabworkspace替换为常量块中出现的变量的名称,常量块的值应根据GUI中输入的值进行更改。 将constantblockpath替换为该常量块的路径,例如mymodel/Constant12


在matlab工作区变量中指定EditBox的值之前,您可能还需要对EditBox进行一些数据验证。

感谢answare,但我无法使用它。我应该在回调函数中写这个吗???在我的例子中是vdp=Steifigkeit?????而rapid=k????或者这些参数的含义是什么?vdp是simulink的名称,您可以用自己的名称替换它。如果您检查最后两个命令,您会看到我正在使用参数“KT”,将其转换为字符串,并将其传递给我的simulink。因此,我可以从命令行更改simulink中的参数值。大多数可以在gui中使用的命令行命令…k和f不一样,k是一个常量块的常量值,f是另一个常量块的常量值。我想在GUI中输入这些常量值的值,然后,simulink模型应运行,这些值的结果应再次显示在GUI中的静态文本字段中。我会上传GUI和simulink的图片,但我的声誉不够高。:)您的GUI代码使
k
f
的值尽可能相同:您从同一对象获得
string
属性,并将其转换为double。是的,但同时我使用:k=str2double(get(handles.kraft,'string');f=str2double(get(handles.flaeche,'String');是的,我现在收到3条警告:)。。。但是结果并没有显示在gui中。在simulink模型中,我在divide_块a之后加入workSpace_块,以获取divide操作的结果并将其显示在Gui中。但它不起作用。
function start_Callback(hObject, eventdata, handles)
k= str2double(get(hObject,'string'));
f= str2double(get(hObject,'string'));
assignin('base','f',f);
assignin('base','k',k);
sim('Steifigkeit');
valstr=get(hObject,'String');
val=str2double(valstr);
assignin('base','nameofvariableinmatlabworkspace',val);
set_param('constantblockpath','Value','nameofvariableinmatlabworkspace');