我是靠谱客的博主 迷你冥王星,最近开发中收集的这篇文章主要介绍Matlab中一个图像框中多条动态曲线的更新前言1、了解函数2、上代码3、运行结果:4、一幅图中多个子窗口的实现,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Matlab中一个图像框中多条动态曲线的更新
- 前言
- 1、了解函数
- 2、上代码
- 3、运行结果:
- 4、一幅图中多个子窗口的实现
前言
Matlab中通过refeshdata()这个函数,可以更新各种数据,这个结合plot()函数可以实现动态的效果1、了解函数
doc refreshdata %查看更新函数的详细信息
doc plot %查看plot相关属性
doc YDataSourse %需要用set设置plot的数据源
doc legend %图例显示,因为是多图像显示,如果需打印,可以设置曲线为不同的形状,--或**
2、上代码
close
clc;
data1 = [1 2 3 4 5 6];
data2 = [1 4 9 16 25 36];
% 建立图表
index1 = plot(data1,'blue'); % 第1条曲线的句柄,曲线为蓝色
set(index1,'YDataSource','data1'); % 设置y轴数据来源 data1
grid on % 显示网格
hold on % 为了让两条图线在一个图中显示
index2 = plot(data2,'red'); % 第2条曲线的句柄,曲线为红色
set(index2,'YDataSource','data2'); % 设置y轴数据来源 data2
%grid on % 显示网格
legend('iq ref','iq sample'); % 显示图例
a = input('stop and show :'); % 暂停,随便在命令窗口输入个什么,开始更新数据
fprintf('数据更新开始n');
% refreshdata by 300ms/time rate
for i = 1:6
data1(i) = data1(i)+i;
data2(i) = data2(i)+i;
pause(0.3); % 按照0.3秒间隔更新一次
%更新数据
refreshdata(index1);
refreshdata(index2);
end
fprintf('数据更新完毕n');
3、运行结果:
运行到input()这一句时,数据显示为:
输入1(随便输入什么都行),运行前后结果为:
输入前:
输入后:
根据结果,说明数据更新了。
4、一幅图中多个子窗口的实现
clc;
close;%关闭窗口
global data1 data2 data3 %定义数据,数据放在了updata_data 函数中
global index1 index2 index3 index4
% 建立图表窗口
subplot(3,1,1);
index1 = plot(data1,'blue','marker','*'); % 第一条曲线的句柄,曲线为蓝色
set(index1,'YDataSource','data1'); % 设置y轴数据来源 data1
set(gca,'xlim',[1 7],'ylim',[0 50]);
grid on % 显示网格
hold on % 为了让两条图线在一个图中显示
index2 = plot(data2,'red'); % 第2条曲线的句柄,曲线为红色
set(index2,'YDataSource','data2'); % 设置y轴数据来源 data2
legend('data1 ',' data2'); % 显示图例
hold off % 为了让两条图线在一个图中显示
subplot(3,1,2)
index3 = plot(data2,'green');
set(index3,'YDataSource','data2'); % 设置y轴数据来源 data2
set(gca,'xlim',[1 7],'ylim',[0 50]);
grid on
subplot(3,1,3)
index4 = plot(data3,'black');
set(index4,'YDataSource','data3'); % 设置y轴数据来源 data2
set(gca,'xlim',[1 7],'ylim',[1 10]);
grid on
%更新
update_data;
%更新数据 这个也可以单独写进一个m文件中
function update_data()
global data1 data2 data3
global index1 index2 index3 index4
data1 = [1 2 3 4 5 6];
data2 = [1 4 9 16 25 36];
data3 = [2 2 2 2 2 2];
for j = 1:3 %刷新3次,看是否可以正常刷新
a = input('stop and show input 1 to continue:'); % 暂停,随便在命令窗口输入个什么,开始更新数据
switch a
case 0
fprintf('exit')
break;
case 1
fprintf('数据更新开始n');
% refreshdata by 300ms/time rate
for i = 1:6
data1(i) = data1(i)+1;
data2(i) = data2(i)+1;
data3(i) = data3(i)+1;
pause(0.3); % 按照0.3秒间隔更新一次
%更新数据
refreshdata(index1);
refreshdata(index2);
refreshdata(index3);
refreshdata(index4);
end
fprintf('数据更新完毕n');
otherwise
fprintf('input number 0 (exit)or 1(run again)');
end
end
end
运行代码:
在matlab命令行输入 1,图形中数据开始更新,如下
下面是全部更新完后的效果:
经过多次修改、测试,功能准确可靠,把demo代码保存下来,以后需要时回顾。
最后
以上就是迷你冥王星为你收集整理的Matlab中一个图像框中多条动态曲线的更新前言1、了解函数2、上代码3、运行结果:4、一幅图中多个子窗口的实现的全部内容,希望文章能够帮你解决Matlab中一个图像框中多条动态曲线的更新前言1、了解函数2、上代码3、运行结果:4、一幅图中多个子窗口的实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复