Matlab中一个图像框中多条动态曲线的更新
- 前言
- 1、了解函数
- 2、上代码
- 3、运行结果:
- 4、一幅图中多个子窗口的实现
前言
Matlab中通过refeshdata()这个函数,可以更新各种数据,这个结合plot()函数可以实现动态的效果1、了解函数
复制代码
1
2
3
4
5doc refreshdata %查看更新函数的详细信息 doc plot %查看plot相关属性 doc YDataSourse %需要用set设置plot的数据源 doc legend %图例显示,因为是多图像显示,如果需打印,可以设置曲线为不同的形状,--或**
2、上代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30close 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、一幅图中多个子窗口的实现
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74clc; 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中一个图像框中多条动态曲线内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复