热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在MATLAB的一个框中从用户处获取多个输入

我想使用waitfor运算符获取多个值,但是我的代码不起作用。我的错误在哪里?

我想使用waitfor运算符获取多个值,但是我的代码不起作用。我的错误在哪里?

methods (access = private)
% Callback function
function ButtonPushed(app,event)
%Reading dataset and getting the inputs from user by using input operation
matrix = xlsread("Transfusion.xlsx");
attributesnum = size(matrix,2) - 1 ;
X = zeros(attributesnum,1);
for i=1:attributesnum
waitfor(app.firstVal,'Value');
value = app.firstVal.Value;
X(i,1) = value;
%Update text of ValuesLabel (for demostrating the concept).
text = ['Values: ',sprintf('%.1f,',X(1:i))];
app.ValuesLabel.Text = text(1:end-2);
end
%Display X in Command window for testing
disp(X)
...
end


我认为它应该有效...


  • 确保使用MATLAB App Designer(您可以通过在命令窗口中输入appdesigner来启动它)。

  • 确保在MATLAB App Designer中将编辑框命名为firstVal

enter image description here


  • 将值设置为Inf是一种即兴解决方案,但这很重要,因为waitfor等待值被更改。
    输入新值后将值设置为Inf会强制用户更改值。

  • 我将matrix = xlsread("Transfusion.xlsx");替换为matrix = [0,0];
    备注:不要期望我们猜测"Transfusion.xlsx"的内容。
    该文件与帖子无关,因为您仅使用大小。

  • 备注:不要害羞,并张贴完整的App Designer代码作为参考(当使用类似App Designer的工具时,该工具可能会在自动生成的代码中隐藏一些重要信息,这对于识别问题可能很重要)。

  • 备注:由于这是后续帖子,因此您应参考自己的previous post。

这是function ButtonPushed(app,event)的修改版本:

% Button pushed function: Button
function ButtonPushed(app,event)
app.Button.Enable = 'Off'; %Disable button while taking input (just nicer).
%I replaced the xlsread("Transfusion.xlsx") with some arbitrary values,because only the size is relevant
matrix = [0,0]; %xlsread("Transfusion.xlsx");
attributesNum = size(matrix,2) - 1;
X = zeros(attributesNum,1);
%Initialize text label with message
app.ValuesLabel.Text = ['Enter ',num2str(attributesNum),' values in edit box (set value and press enter)'];
for i = 1:attributesNum
waitfor(app.firstVal,'Value');
value = app.firstVal.Value;
X(i,1) = value;
%Set to Inf every iteration,because waitfor waits for a change in value (and you may need to enter same value twice).
app.firstVal.Value = Inf;
%Update text of ValuesLabel (for demonstrating the concept).
text = ['Values: ',sprintf('%.1f,',X(1:i))];
app.ValuesLabel.Text = text(1:end-2);
end
%Display X in Command window for testing
disp(X)
app.Button.Enable = 'On'; %Enable button at the end.
end


这是完整的代码(包括生成的代码)。
您可以将其复制并粘贴到App1.m文件中以查看其工作方式。

classdef app1 % Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
EditFieldLabel matlab.ui.control.Label
firstVal matlab.ui.control.NumericEditField
ValuesLabel matlab.ui.control.Label
Button matlab.ui.control.Button
end
% Callbacks that handle component events
methods (Access = private)
% Button pushed function: Button
function ButtonPushed(app,event)
app.Button.Enable = 'Off'; %Disable button while taking input (just nicer).
%I replaced the xlsread("Transfusion.xlsx") with some arbitrary values,because only the size is relevant
matrix = [0,0]; %xlsread("Transfusion.xlsx");
attributesNum = size(matrix,2) - 1;
X = zeros(attributesNum,1);
%Initialize text label with message
app.ValuesLabel.Text = ['Enter ',' values in edit box (set value and press enter)'];
for i = 1:attributesNum
waitfor(app.firstVal,'Value');
value = app.firstVal.Value;
X(i,1) = value;
%Set to Inf every iteration,because waitfor waits for a change in value (and you may need to enter same value twice).
app.firstVal.Value = Inf;
%Update text of ValuesLabel (for demonstrating the concept).
text = ['Values: ',X(1:i))];
app.ValuesLabel.Text = text(1:end-2);
end
%Display X in Command window for testing
disp(X)
app.Button.Enable = 'On'; %Enable button at the end.
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 369 256];
app.UIFigure.Name = 'UI Figure';
% Create EditFieldLabel
app.EditFieldLabel = uilabel(app.UIFigure);
app.EditFieldLabel.HorizOntalAlignment= 'right';
app.EditFieldLabel.Position = [45 123 56 22];
app.EditFieldLabel.Text = 'Edit Field';
% Create firstVal
app.firstVal = uieditfield(app.UIFigure,'numeric');
app.firstVal.Position = [116 123 100 22];
app.firstVal.Value = Inf;
% Create ValuesLabel
app.ValuesLabel = uilabel(app.UIFigure);
app.ValuesLabel.Position = [49 51 297 22];
app.ValuesLabel.Text = 'Values: ';
% Create Button
app.Button = uibutton(app.UIFigure,'push');
app.Button.ButtOnPushedFcn= createCallbackFcn(app,@ButtonPushed,true);
app.Button.Tooltip = {'Press to start taking input'};
app.Button.Position = [46 204 120 32];
% 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 = app1
% Create UIFigure and components
createComponents(app)
% Register the app with App Designer
registerApp(app,app.UIFigure)
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

推荐阅读
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • VB.net 进程通信中FindWindow、FindWindowEX、SendMessage函数的理解
    目录一、代码背景二、主要工具三、函数解析1、FindWindow:2、FindWindowEx:3、SendMessage: ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
author-avatar
燕门雪_346
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有