LabVIEW论坛
直播中

王智豪

5年用户 40经验值
擅长:可编程逻辑 MEMS/传感技术 接口/总线/驱动
私信 关注
[问答]

在Labview中,使用Matlab script节点对实时数据怎么让处理结果图实时展示?

原来的采集卡使用的labview 2011 32位,matlab2012a 32位。

在数据采集系统中,需要添加一个实时的处理模块,对处理结果用XY图实时展示。

系统参数: 采样率10k,采样数:1k,采集通道我用的6个通道或者自己定义。

我的尝试: 将采集到的数据接入到M Script节点,用A来接收,为6x1000的数据。处理结果用XY图展示。为了让其实时变化,我将其放入了一个while框中,设置1秒刷新一次。可以让图形实时变化。这样可行吗?

在没有加while循环时,接收到的数据A不会变化,是怎么回事,M程序中处理是用for循环先处理采样率m个数据,然后再处理m+1到2m个数据,会出现越界问题。

放到while框中,接受到的数据成为 6x1000。我可以将其转置就跟原来的存储格式一样了。在处理的时候在M 程序中,直接用for循环,每次处理m个数据。循环多少次就能有多少个点绘制。这样可行吗?

还有个不懂的,采样率10k,采样数1k,我接受到的数据为6x1000. 所以在M程序中最多处理1k个数据。1k指的是一列数据1000x1个数据来处理经过一些傅立叶变换等计算会计算出一个值。for循环5次就会有5个点的显示。

这样做是否合理?请多指教。谢谢

回帖(1)

王智豪

2019-6-4 21:41:06
您好,我跟你遇到同样的问题,咱们的需求是一样的,都是需要将数据进行实时处理然后实时的展示结果图。

原来的计算方式是,采集完的数据进行计算,每次计算m个数据点。我设置的for循环次数是样本总数居/采样率。

在实时计算中需要在计算时添加一个while循环。用A接收的永远都是 6 X 1000的, 我在计算中将其转化为 1000 X 6在是的,计算方法就不能使用采集完再对数据切分计算的方法,会出现数组越界。所以我采用的方法是,这1000个数据点分成10份进行计算(说白了就是10个点),每次计算100个点。10的由来就是根据一般将采样数设置为采样率的10分之1(不知道这样是否合适)。这样是可以得到自己想要的结果的。

但是仍然存在一个疑惑,采样率是10K, 采样数是1K,while循环中设置的刷新时间是1秒, 本来1s接收的是10K个数据点,但是在while中1s刷新一次是只会显示每10K中前1K的数据点计算结果吗。  还是将while循环中的定时器刷新时间设置为100ms,这样是否能将每个数据都计算到。

其他的问题就是,采集到的数据在计算之前不需要对数据进行处理吗(类似于归一化等处理),还是说在某种情况下才需要进行处理。

我刚接触也不太了解这些,你是否解决了你的问题。如果解决了请麻烦你指点一下我。 谢谢。

我的联系方式 qq:1029593617
举报

更多回帖

发帖
×
20
完善资料,
赚取积分