引言

MATLAB是科学工程计算分析的重要编程环境,除了数值计算代码的编写,我们往往修改输入参数,作为研究变量。如果直接在代码脚本中修改有两个问题:

修改不便,必须进入代码内部,找出相关变量;

不熟悉程序的人有可能将程序修改错误,得到错误的结果。

解决这一问题的一种方案是:采用参数对话框输入。但是,MATLAB自带的inputdlg函数功能有限,调用较为麻烦,因此在此基础上订制开发了paradlg。

问题描述

某MATLAB程序,需要输入以下参数:

f_center = 100

filename = 'B1_C1_F'

dt = 16

f_range = [0 20]

预期以下图的对话框输入:

paradlg.jpg-27.3kB

应用示例

基本调用

使用方法:

构造prompt0数据,第一列为输入提示,第二列为默认参数;

支持三类数据输入,标量、向量、字符串;

调用paradlg函数,返回输入的数据集para;

将para中的元素依次赋值给目标的变量f_center,filename_pub,dt,f_range;

prompt0 = { % 对话框参数

'发射信号中心频率(kHz)', 100

'发射信号中心频率(kHz)','B1_C1_F'

'采样周期dt (e-9 s)',16

'绘图频谱范围(kHz)',[0 20]

};

para = paradlg(prompt0);

f_center = para{1}; % 发射信号中心频率(kHz)

filename_pub = para{2}; % 输出报告文件名

dt = para{3}; % 采样周期

f_range =para{4};

结果如图:

paradlg.jpg-25.5kB

高级调用

如需控制对话框的宽度、标题,则在函数paradlg中输入第二个变量dlg0。

% dlg0.width -- 对话框宽度

% dlg0.title -- 对话框标题

操作示例:

prompt0 = { % 对话框参数

'发射信号中心频率(kHz)', []

'发射信号中心频率(kHz)','B1_C1_F'

'采样周期dt (e-9 s)',16

'绘图频谱范围(kHz)',[0 20]

};

dlg0.width = 100;

dlg0.title = '信号谱分析参数输入';

para = paradlg(prompt0,dlg0);

f_center = para{1}; % 发射信号中心频率(kHz)

filename_pub = para{2}; % 输出报告文件名

dt = para{3}; % 采样周期

f_range =para{4};

paradlg-pro.jpg-33.6kB

主程序代码

function para = paradlg(prompt0,dlg0 )

% 题目:标准化对话框创建程序

% 参数:

% prompt0 -- 必要参数,提示语以及默认参数,n*2

% dlg0 -- 可选参数对话框宽度,标题信息

% dlg0.width -- 对话框宽度

% dlg0.title -- 对话框标题

% dlg0.auto -- 是否自动保存上次数据,dlg0.auto=1或dlg0.auto=0

% 功能:

% 创建标准化参数输入对话框

% 支持 标量、向量、字符串

% 导出输入参数

% 记忆上次输入

% 作者: 马骋

% 参考:无,使用示例见附录

% 2016.03.30 @HIT

%% prompt参数

n = size(prompt0,1);

prompt = cell(n,1); % 提示语

def0 = cell(n,1); % 默认参数

for iloop = 1:n

prompt{iloop} = prompt0{iloop,1}; % 参数分离

def0{iloop} = num2str(prompt0{iloop,2}); % 默认参数必须为字符串格式

end

try

load data_dlg % 导入上次运行数据def

catch

def =def0;

end

%% dlg参数

try % 宽度设置

dlg.width = dlg0.width;

catch

dlg.width = 60;

end

try % 标题设置

dlg.title = dlg0.title;

catch

dlg.title = '参数输入';

end

%% 对话框

linewidth = ones(n,2); % 宽度设置

linewidth(:,2) = linewidth(:,2)*dlg.width; % 可以输入控制

options.Interpreter='tex';

para_dlg = inputdlg(prompt,dlg.title,linewidth,def,options); % 打开对话框,获取参数字符串

%% 参数转换

% 向量转换,字符串转换

para = cell(n,1); % 输出参数

for iloop = 1:n

temp = ['[',para_dlg{iloop},']']; % 默认按向量转换

para{iloop} = str2num(temp);

if isempty(para{iloop}) % 如果转换后为空,则为字符串

para{iloop} = para_dlg{iloop};

end

end

%% 参数保存

def = para_dlg; % 本次输入赋值给def

save('data_dlg','def'); % 保存对话框数据,用于下次导入

try

if ~dlg0.auto

delete data_dlg.mat

end

catch

end

end

matlab编写的程序输入参数怎么写,MATLAB|标准参数输入对话框创建相关推荐

  1. Java黑皮书课后题第4章:*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值

    *4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离.编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值 题目 题目概述 破题 运行示例 代码 题目 题目概述 *4 ...

  2. 1.简述一个Activity跳转到另一个Activity时,两个Activity生命周期方法的执行过程。2.编写一个程序,要求在第一个界面中输入两个数字,在第二个界面显示第一个界面两个数字的和。

    1.简述一个Activity跳转到另一个Activity时,两个Activity生命周期方法的执行过程. 首先,我创建了一个MainActivity和SecondActivity两个Activity. ...

  3. 编写一个程序,实现以下功能:(1)输入一系列的学生数据(包括学生的学号、姓名和成绩等基本信息),将学生信息写入二进制文件 student . dat 中。。。。。。

    编写一个程序,实现以下功能: (1)输入一系列的学生数据(包括学生的学号.姓名和成绩等基本信息),将学生信息写入二进制文件 student . dat 中.(2)从 student . dat 文件中 ...

  4. matlab小程序怎么单独保存,matlab编写小程序

    Matlab编写与调用函数_信息与通信_工程科技_专业资料.会使用 MATLAB 学习指南 第六章.编写与调用函数 在这一章中,我们讨论如何用多源代码文件来构造一个程序. ... MATLAB简单函数 ...

  5. python 装饰器 参数-[Python]写个带参数的装饰器

    上篇文章 Python装饰器为什么难理解?从函数到装饰器一步一步介绍了Python装饰器的来由,不知你对装饰器理解了没有,强烈建议你自己动手写个装饰器应用到项目中加深理解.装饰器可以很简单,也可以很复 ...

  6. qt 调用linux键盘输入,嵌入式linux上QT标准键盘输入的实现

    1.嵌入式linux上QT标准键盘输入的实现 在嵌入式平台上运行QTE时,使用的键盘通常不是标准键盘,而是嵌入式设备外扩的普通按键.那么实现QTE键盘输入的方法大体上可以分为两类: (1)编写一个普通 ...

  7. matlab编写的程序输入参数怎么写,用matlab编写一个用EM算法估计参数的程序

    % 目标函数:高斯混合模N[x(i),mu,sm]=0.8N[x(i),mu1,sm1]+0.2N[x(i),mu2,sm2] %                                   ...

  8. matlab编写二分法程序,我写的程序,想用Matlab二分法实现,望高手帮忙!

    下面是我的程序.我现在想变化tita,使得最后的结果E=0,但是我现在只会把tita写成一个固定值,不会改变它.我想用二分法变化tita,望高手帮忙,多谢,急用! % 列出x,y向量 x=[260 2 ...

  9. MATLAB编写用户登陆界面小结——更改界面左上角图标、输入用户名提醒和输入密码隐藏

    笔者最近参加了一个小比赛,需要用MATLAB 写个软件,这里总结一下写登录界面时的一些心得体会. 实现方法是找的网上大牛提供的经验并结合自己的改进,这里就不一一列出链接,如果侵权,请联系笔者. 直接给 ...

  10. matlab编写随机数程序,【matlab编程】matlab随机数函数

    Matlab内部函数 a. 基本随机数 Matlab中有两个最基本生成随机数的函数. 1.rand() 生成(0,1)区间上均匀分布的随机变量.基本语法: rand([M,N,P ...]) 生成排列 ...

最新文章

  1. 更换主版之后远程管理卡恢复操作
  2. Spring MVC配置文件的三个常用配置详解
  3. Lambda表达式介绍
  4. 【CSS3 DEMO】扑克正反面翻牌效果
  5. Swift3中数组创建方法
  6. Andorid之KeyguardManager的介绍
  7. java quartz实例_一个非常简单的quartz例子
  8. PowerDesigner通过jdbc连接MySQL实现逆向工程步骤
  9. 注解Annotation
  10. test luasql's postgresql driver performance (not better than pgbench)
  11. MySql中PreparedStatement对象与Statement对象
  12. Python3_tuple
  13. win7旗舰版上装VS2010错误(提示:miicrosoft 应用程序报告[安装失败])
  14. MySQL基础(学习笔记)
  15. VLC帮助文档-中文详细版(vlc-2.2.6)
  16. 负载均衡器ribbon和LoadBalancer
  17. 伯德图 matlab,matlab画三维伯德图,bode图
  18. 优思学院:六西格玛证书有用吗?有什么方法获取六西格玛证书?
  19. 运算放大器芯片输出扩流电路三例
  20. 智慧旅游海内外现况详情及发展对策

热门文章

  1. 什么是OEM、ODM、OBM
  2. 安全生产计算机考试成绩查询,安全生产在线模拟考试成绩查询
  3. servlet实现统计网站访问量
  4. 光纤跳线如何区分单模和多模
  5. QT 加载歌词LRC文件
  6. html中放大镜案列,HTML放大镜的一种实现及原理讲解(js)
  7. [数据分析] 5W2H分析方法
  8. android webview 广告过滤,使用webView屏蔽广告(实操版)
  9. IE浏览器假死解决办法
  10. SpringBoot 发送电子邮件