matlab如何在GUI两个fig用户页面中传递参数

matlab如何在GUI两个fig用户页面中传递参数,第1张

常用的几种手段:

1、使用global变量,这种方法最简单直接,但不符合程序设计的主流趋势,尤其在规模稍微大一点的程序中应尽量避免使用。

2、使用图形对象的userdata属性,例如调用第二个fig之前先设置第一个fig的userdata,然后在第二个fig的回调函数中获取第一个fig的userdata。前提是,在打开第二个fig时不关闭第一个,至于获取第一个fig的句柄,可以通过约定使用特定的Tag然后用findobj来查找。

3、使用setappdata/getappdata函数,和第二种方法类似,但不使用userdata,而是用自定义的名称,可以避免一些潜在的冲突。

4、如果从第二个fig返回数据,可以用返回参数,但需要在该gui的m函数中加入类似uiwait之类的指令,以确保只有当该gui被关闭之后才返回。

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),平台有hadoop

% 注意:% 程序运行过程中会生成两个FIG文件用于测试:Sample1fig和Sample2fig

% 绘制第一个示例图并保存到文件

x = 0:1:2pi;

plot(x,sin(x),x,cos(x));

saveas(gcf,'Sample1fig')

legend('sin','cos')

% 绘制第二个示例图并保存到文件

plot(x,5sin(2x),x,5cos(3x));

saveas(gcf,'Sample2fig')

legend('sin','cos')

close(gcf);

%=======================================

% 上面的代码生成测试条件,后面为有用代码

%=======================================

% 载入fig文件

open('Sample1fig')

% 删除legend避免繁杂的处理

lgd=findall(gcf,'type','axes','tag','legend');

delete(lgd)

% 查找线条对象,并获取数据

l=findobj(gcf,'type','line');

for i=1:length(l)

data(1)x{i}=get(l(i),'Xdata');

data(1)y{i}=get(l(i),'Ydata');

data(1)l{i}=get(l(i),'linestyle');

data(1)m{i}=get(l(i),'marker');

end

close(gcf)

open('Sample2fig')

% 删除legend避免繁杂的处理

lgd=findall(gcf,'type','axes','tag','legend');

delete(lgd)

% 查找线条对象,并获取数据

l=findobj(gcf,'type','line');

for i=1:length(l)

data(2)x{i}=get(l(i),'Xdata');

data(2)y{i}=get(l(i),'Ydata');

data(2)l{i}=get(l(i),'linestyle');

data(2)m{i}=get(l(i),'marker');

end

close(gcf)

% 考虑到原始图形中各线条的点数可能不一致,所以先用足够范围的数据绘图,再修改

x1=[min([data(1)x{:}]); max([data(1)x{:}])];

y1=[min([data(1)y{:}]); max([data(1)y{:}])];

y1 = y1(:,ones(length(data(1)y),1));

x2=[min([data(2)x{:}]); max([data(2)x{:}])];

y2=[min([data(2)y{:}]); max([data(2)y{:}])];

y2 = y2(:,ones(length(data(1)y),1));

[ax,h{1},h{2}]=plotyy(x1,y1,x2,y2);

% 使用两种颜色区分两个纵坐标

c = {'b', 'k'};

for i=1:2

for j=1:length(h{i})

set(h{i}(j),'XData',data(i)x{j},'YData',data(i)y{j}, 'color', c{i}, 'linestyle', data(i)l{j}, 'marker', data(i)m{j});

end

set(ax(i),'YColor',c{i});

end

( b) 在Excel 窗口中选择“工具”菜单中的“加载宏”命令;( c) 在d出的菜单中单击“浏览”按钮;( d) 选择D: \MAT LAB11\ EXLINK 文件夹, 找到EXCLLINK 后, 再单击“确定”按钮;( e) 返回到“加载宏”对话框, 再击“确定”按钮。见图1 所示的对话框。图1 “加载宏”对话框Fig 1 “adding macro”dialog box( f)Excel 窗口的“格式”工具栏下会出现一个新的工具栏“Excel Link”, 该工具栏有三个按钮, 分别为putmatrix, getmatrix, evalstring。见图2 所示的Excel 窗口。此时, Matlab 命令窗口已经打开, 说明Excel 链接Matlab 成功。putmatrix, getmatrix, evalstring 三个按钮的功能分别为: putmatrix 按钮的作用是把Excel 中选中的数据传送到Matlab 中; getmatrix 按钮的作用是Excel 从Matlab 中获取数据; evalstring 按钮的作用是执行Matlab 的命令。利用这三个按钮, 就可以对Excel 的数据传送到Matlab, 进行处理, 把Matlab 强大的处理功能扩

在matlab GUI中,可以在回调函数中,直接利用get函数获取table的数据及其列名。假设GUI的名称为test,则会自动生成testfig和testm文件。

在GUI界面编辑文件testfig中拖入一个table控件,设置其tag为uitable1(默认)。

在对应的M文件testm的回调函数(如按钮的回调函数)中,添加如下代码(此处以将table中数据写入xls文件为例)。

[FileName PathName Index] = uiputfile('xls', '文件另存为', datestr(now, 29));

if Index == 1   % 如果窗口没关

    dt = get(handlesuitable1, 'data');  % 获取表格数据 

    colname = get(handlesuitable1, 'columnname'); % 获取表格的列名

    data1 = [colname'; dt];  % 将表格的列名和对应的数据连起来

    str = [PathName, FileName]; % 将要保存的文件的路径赋值给str

    xlswrite(str,data1);   % 将修改后的表格写进Excel表格中,以Excel的形式保存

end

以上就是关于matlab如何在GUI两个fig用户页面中传递参数全部的内容,包括:matlab如何在GUI两个fig用户页面中传递参数、matlab画图之后fig数据导出、matlab的问题 请教高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9467075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存