您可以将数据存储在统一的结构中,并使用该结构来生成下拉菜单并推动计算。

考虑以下示例GUI(底部的完整代码):

这是2个最相关的部分:

function makedummydata(mydatafile)

cases(1).Name = '325LA Precision Acoustics';

cases(1).ntransducers = 2;

cases(1).TransducerConstant1(1) = 28.8;

cases(1).TransducerConstant1(2) = 28.8;

cases(1).TransducerConstant2(1) = 0.72;

cases(1).TransducerConstant2(2) = 6.055;

cases(2).Name = '2100L E&I';

cases(2).ntransducers = 2;

cases(2).TransducerConstant1(1) = 10.267;

cases(2).TransducerConstant1(2) = 28.8;

cases(2).TransducerConstant2(1) = 1.6;

cases(2).TransducerConstant2(2) = 6.055;

save(mydatafile, 'cases');

end

function recalc(hObj, ~)

handles = guidata(hObj);

deviceID = handles.devicedd.Value;

transducerID = handles.transducerdd.Value;

fgen1_PNP = str2double(handles.fgen1_PNP.String);

TransducerConstant1 = handles.UserData(deviceID).TransducerConstant1(transducerID);

TransducerConstant2 = handles.UserData(deviceID).TransducerConstant2(transducerID);

voltage = (fgen1_PNP*2 - TransducerConstant1)/TransducerConstant2;

handles.resultsbox.String = voltage;

end

在这里,我创建了一个结构数组,其中每个顶级索引对应于一个设备及其相关常数。 生成GUI时,将在下拉列表中填充所有设备名称,并在传感器列表中填充该设备可用的传感器数量。

当您对下拉列表或fgen1 PNP之一进行更改时,将重新计算电压。 请注意重新计算功能有多简单。 因为我们以MATLAB-ic方式设置了数据结构,所以我们可以轻松地访问所有相关部分,而无需循环,字符串操作或可怕的eval 。

完整的GUI代码:

function testcode

% Set up sample data

mydatafile = 'mydevices.mat';

makedummydata(mydatafile);

buildGUI(mydatafile);

end

function recalc(hObj, ~)

handles = guidata(hObj);

deviceID = handles.devicedd.Value;

transducerID = handles.transducerdd.Value;

fgen1_PNP = str2double(handles.fgen1_PNP.String);

TransducerConstant1 = handles.UserData(deviceID).TransducerConstant1(transducerID);

TransducerConstant2 = handles.UserData(deviceID).TransducerConstant2(transducerID);

voltage = (fgen1_PNP*2 - TransducerConstant1)/TransducerConstant2;

handles.resultsbox.String = voltage;

end

function makedummydata(mydatafile)

cases(1).Name = '325LA Precision Acoustics';

cases(1).ntransducers = 2;

cases(1).TransducerConstant1(1) = 28.8;

cases(1).TransducerConstant1(2) = 28.8;

cases(1).TransducerConstant2(1) = 0.72;

cases(1).TransducerConstant2(2) = 6.055;

cases(2).Name = '2100L E&I';

cases(2).ntransducers = 2;

cases(2).TransducerConstant1(1) = 10.267;

cases(2).TransducerConstant1(2) = 28.8;

cases(2).TransducerConstant2(1) = 1.6;

cases(2).TransducerConstant2(2) = 6.055;

save(mydatafile, 'cases');

end

function buildGUI(mydatafile)

% Generate GUI

h.f = figure('MenuBar', 'none', 'ToolBar', 'none', 'NumberTitle', 'off');

cases = load(mydatafile, 'cases');

h.UserData = cases.cases; % Remove extra layer

h.lbl(1) = uicontrol('Parent', h.f, 'Style', 'Text', ...

'Units', 'Normalized', 'Position', [0.1 0.7 0.6 0.1], ...

'FontSize', 12, 'HorizontalAlignment', 'left', 'String', 'Device Thing');

h.devicedd = uicontrol('Parent', h.f, 'Style', 'popupmenu', ...

'Units', 'Normalized', 'Position', [0.1 0.55 0.6 0.2], ...

'String', {h.UserData(:).Name}, 'Callback', @recalc);

h.lbl(2) = uicontrol('Parent', h.f, 'Style', 'Text', ...

'Units', 'Normalized', 'Position', [0.1 0.5 0.6 0.1], ...

'FontSize', 12, 'HorizontalAlignment', 'left', 'String', 'Transducer Thing');

h.transducerdd = uicontrol('Parent', h.f, 'Style', 'popupmenu', ...

'Units', 'Normalized', 'Position', [0.1 0.35 0.6 0.2], ...

'String', 1:h.UserData(1).ntransducers, 'Callback', @recalc);

h.lbl(3) = uicontrol('Parent', h.f, 'Style', 'Text', ...

'Units', 'Normalized', 'Position', [0.1 0.3 0.3 0.1], ...

'FontSize', 12, 'HorizontalAlignment', 'left', 'String', 'fgen1 PNP Thing');

h.fgen1_PNP = uicontrol('Parent', h.f, 'Style', 'edit', ...

'Units', 'Normalized', 'Position', [0.1 0.25 0.25 0.1], ...

'String', 1);

h.lbl(4) = uicontrol('Parent', h.f, 'Style', 'Text', ...

'Units', 'Normalized', 'Position', [0.5 0.3 0.3 0.1], ...

'FontSize', 12, 'HorizontalAlignment', 'left', 'String', 'Result');

h.resultsbox = uicontrol('Parent', h.f, 'Style', 'edit', ...

'Units', 'Normalized', 'Position', [0.5 0.25 0.25 0.1]);

guidata(h.f, h);

recalc(h.f, 'hi'); % Fire first calc

end

matlab 内存读取数据,matlab相关推荐

  1. matlab figure 读取数据,matlab 读取figure 文件上的数据

    情况一:figure上只有一个axis: 1.首先调用h = findobj(gca,'Type','line')命令取得曲线的句柄: 2.然后调用xdata=get(h,'XData')和ydata ...

  2. matlab如何excel数据,Matlab如何读取Excel里的数据

    Matlab如何读取Excel里的数据呢?一起看看下面这篇文章吧! 我们可以使用xlswrite,用法是这样的:xlswrite('Excel路径+Excel的名称','需要输出的矩阵名称')当然,如 ...

  3. MATLAB 实现读取数据文件,画图并自动将图片保存到文件夹中

    实现读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中,也可选择将直方图中点连线. %%读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中, ...

  4. matlab引入外部数据,matlab引入外部数据

    (1)适用与 matlab 等非编译语言. (2)适用与 C 和 Fortran 等编译语言. B. 如何在外部程序中告诉 ANSYS 改变单元属性和载荷变化: 在从 ANSYS 中导入数据后.... ...

  5. matlab神经网络预测数据,matlab神经网络工具箱

    什么是matlab神经网络 Matlab语言是MathWorks公司推出的一套高性能计算机编程语言,集数学计算.图形显示.语言设计于一体,其强大的扩展功能为用户提供了广阔的应用空问. 它附带有30多个 ...

  6. matlab分析gnss数据,Matlab读取GNSS 观测值o文件代码示例

    一.准备工作 观测值数据读取是进行数据处理的前提,通常,观测值的数据格式有rtcm.ubx.rinex,各家厂商还有自定义的格式.数据读取是最简单的工作,掌握了数据组织格式即掌握了数据读取策略,简言之 ...

  7. matlab查看hdf5数据,Matlab 操作 HDF5文件

    HDF5文件 在使用Matlab对数据进行预处理时,遇到了内存不足的问题,因为数据量太大,在处理完成以前内存已经爆满.如果使用Matlab的.m文件对文件进行存储的话,则需要将数据分割成多个文件,对后 ...

  8. matlab图像读取原理,matlab中imread读入图像的原理

    imread的使用方法是: I=imread('C:\XXXX\XXXX.jpg'); I = imread('E:\2012\The standard image\Lena.bmp'); I1 = ...

  9. matlab导入word数据,matlab导入word

    1.word里内容怎么导进matlab Word 图片----------------------------------------方法一Matlab与Word集成--Notebook在Matlab ...

最新文章

  1. B 站 Up 主自制秃头生成器,独秃头不如众秃头?
  2. Android Application中的Context和Activity中的Context的异同
  3. dubbo web工程示例_dubbo实战之二:与SpringBoot集成
  4. python服务器稳定性,一种基于Python服务器稳定性测试的方法技术
  5. 第五章 列表、元组和字符串[DDT书本学习 小甲鱼]【6】
  6. OS10.11安装Cocoapods并集成ReactiveCocoa
  7. mysql遇到时区问题的坑(Java解决方案)
  8. java观察者模式本质_6.[研磨设计模式笔记]观察者模式
  9. rpm安装mysql
  10. 老板喜欢动脑子工作的人
  11. Notepad++插件安装和使用和打开大文件
  12. 超级有用的git reset --hard和git revert命令
  13. hp 服务器 阵列卡信息导入,HP Proliant系列服务器 配置阵列卡过程.doc
  14. Kindeditor在线 HTML 编辑器使用
  15. wxpython制作excel表格_怎么做一个精美的excel表格
  16. Markdown 编辑公式
  17. CSS3中设置动画播放时间
  18. 技术干货 | 人大金仓KFS基于分区索引的分片入库技术解析
  19. 熬夜的工作要不要做,大保:不要熬夜挣钱上班
  20. 嵌入式linux矩阵键盘,嵌入式linux matrix_keypad矩阵键盘驱动

热门文章

  1. java笔记类与对象3.7-3.10 2020.3.17
  2. Markdown简明教程
  3. 分布式数据库CAP原理和Base
  4. 10taskkill无法终止进程_?进程的状态转换
  5. linux 内核load addr,linux2.4启动分析(1)---内核启动地址的确定 vmlinux LOAD_ADDR ZRELADDR...
  6. SpringMVC-快速入门
  7. class path resource [log4j.properties] cannot be resolved to URL because it does not exist
  8. TensorFlow 2——【module ‘tensorflow.compat.v1‘ has no attribute ‘contrib‘】解决方案
  9. Bear and Raspberry
  10. 制导炸弹毕业设计怎么用matlab仿真,基于MATLAB的自动控制系统仿真-本科毕业设计.doc...