我是靠谱客的博主 迷你冥王星,最近开发中收集的这篇文章主要介绍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、一幅图中多个子窗口的实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部