问题标签 [data-acquisition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
159 浏览

python - 有效地将非常大的 unicode 字符串处理为 csv

通常我可以在这个网站上很快找到我的困境的答案,但也许这个问题需要更具体的接触;

我从泰克示波器下载了大约 5000 万长的 unicode 字符串。分配这个对于内存来说是一件痛苦的事情(sys.getsizeof() 报告 ~100 MB)

问题在于我需要将其转换为 CSV,以便我可以获取 10,000 个逗号分隔值中的 10,000 个(这是固定的)... 1)我尝试了 split(",") 方法,使用这个, python内核上的RAM使用量又增加了300 MB ....但是这个过程非常有效(除非我在一个例程中循环这个~100次......在迭代40-50之间的某个地方,内核吐出一个内存错误.) 2) 我编写了自己的脚本,在下载了这个荒谬的长字符串后,扫描逗号的数量,直到看到 10,000 并停止,将逗号之间的所有值转换为浮点数并填充一个 np 数组。从内存使用的角度来看,这非常有效(从导入文件之前到运行脚本之后,内存使用量仅变化 150MB。)但是它慢得多,

下面是用于处理这个文件的代码,如果你 PM 我,我可以给你发一份字符串的副本以供试验(但我相信生成一个可能更容易)

代码 1(使用 split() 方法)

代码 2(自生成脚本);

还尝试了带有 StringIO 的 Pandas Dataframe 进行 CSV 转换。那个东西只是试图将它读入框架时出现内存错误。

我认为解决方案是将其加载到 SQL 表中,然后将 CSV 提取到 10,000 个样本块中(这是脚本的预期目的)。但我不想这样做!

感谢您的所有帮助!

0 投票
1 回答
67 浏览

python - 从 Geosig Ve-53 接收地震数据

我的目标是创建一个小型数据采集系统,使用 KPCI-3101 作为物理接口从 Geosig Ve-53 收集数据;和 python 创建一个记录事件并将其可视化的应用程序。

Ve-53 使用 12 针电缆,如下表所示: ve-53

我的问题:

  • 是否可以仅使用可用材料来做到这一点?
  • 我需要的不仅仅是 python 来接收、存储和可视化数据吗?

谢谢你。

0 投票
1 回答
129 浏览

c - Measure Volt DC from an Analog input into an array and Calculate Volt DC in RMS

I am developing Test automation in GeoTest ATEasy and LabWindows\CVI, in the tests i measure analog and digital outputs\inputs.

In one of the test i need to measure an Analog input which contains an audio signal - and verify its Hz and Volt DC RMS.

The audio Signal is 5Hz and 2 Volt DC in RMS.

I have the possibilty to measure multiple Volt samples into an array, but i need to decide what is the sample rate and the # of samples i want to sample.

After measuring, i need to verify that the signal is 5Hz and 2 Volt DC in RMS.

Any suggestion on how to analyze the data to see if the signal is actually 5Hz and 2 Volt DC in RMS?

I Need an algorithm, or a library function that can do these calculations.

What should my sample rate and # of samples (its also the size of the array) be?

0 投票
2 回答
12590 浏览

signal-processing - Simulink:将连续信号转换为离散信号

我对 simulink 很陌生,所以这个问题可能看起来很简单。我正在寻找一种每隔 X 秒对连续信号进行采样的方法。

基本上我正在做的是模拟我正在运行的演示的数据采集单元的原理,但我似乎无法找到一个块来做到这一点,我能得到的最接近的是零阶保持。

0 投票
2 回答
402 浏览

dm-script - 如何自动进行多SI采集?

我想编写一个 Gatan DigitalMicrograph 脚本来连续获取多个 EELS 光谱图像。如果有命令获取光谱图像(SI)数据,并将三维图像存储到数组中,我将实现我的计划。但是,我无法从参考手册中找到适用于 SI 成像模式的命令。在这种情况下我应该使用什么命令?您对我的目的有帮助吗?如果您分享一些智慧,将不胜感激。

0 投票
1 回答
701 浏览

python - 使用 Python 获取基于火花塞驱动的内燃机状态

致力于为定制越野车创建数据采集系统。使用 Raspberry Pi 和自定义转速计(经过测试并确认工作)来测量 RPM。在以下代码中使用中断来获取 RPM 值。

此代码仅在引擎正在运行并产生火花时才有效。如果没有火花,则代码将等待该边缘并且不会继续。调用时get_rpm(),如果代码正在等待边缘,这会导致其他进程挂起。

我打算解决此问题的方法是在另一个进程中获取引擎的状态。我认为它在两个部分中效果最好。

第 1 部分,在单独的线程中运行(循环):

第 2 部分,根据需要作为函数调用:

将第 1 部分保存last到第 2 部分可访问的内存中,第 2 部分将根据火花塞最后一次点燃的时间确定汽车是否正在运行。engine_state用作比较器时,数据采集系统将仅在为真时获取并存储RPMget_rpm()engine_state

如何以可以使用第 2 部分中的last变量的方式实现第 1 部分?last将会非常非常快地发生变化。我不想每次last更新时都将它存储到 Raspberry Pi 的 SD 卡上的文本文件中。我想存储last在 RAM 中。

非常感谢!

0 投票
2 回答
3405 浏览

signal-processing - 在labview中添加数据采集延迟

(抱歉,我的声誉等级低于 10,无法发布图片)

我想做的是,我希望我的激光位移数据采集器在另一个数据采集器开始采集数据后的一秒后开始采集数据。

我无法在激光位移 daq 上添加延迟。(两种方法都应运行 10 秒,激光位移数据采集应延迟 1 秒。)

谢谢

0 投票
2 回答
902 浏览

matlab - 从 .hpf 文件中读取数据

Quickdaq用来从我的传感器接收数据;输出是一个.hpf文件

我想在python&中从这个文件中读取数据matplotlib以应用一些信号分析。

如何使用 python(或任何其他语言)读取(或转换为.csv)文件?.hpf

我在互联网上找到了这个,但我不知道如何使用它,如果它是最新的解决方案?

0 投票
1 回答
1171 浏览

matlab - 如何在 MATLAB 中使用 Data Aquisition Toolbox 连续记录数据和绘制数据

我正在使用数据采集工具箱收集数据。数据在后台收集。我正在从 8 个热电偶收集数据,并且能够打电话给我的听众来不断更新我的情节。但是,我还需要保存收集数据的文件、数组或某种日志。这是我的代码:

函数 plotData 是:

函数 logData 是:

知道如何在收集数据时保持数据的持续更新日志,同时更新收集到的所有数据点的日志文件吗?

0 投票
0 回答
511 浏览

matlab - 将数据从 Arduino UNO 传输到 MATLAB,但得到很多 NaN 和缺少数字的数字

我正在使用 Arduino Uno 从编码器收集学位数据,然后使用 USB 将该数据发送到 MATLAB。为了也获得旋转速度,我在每个度数数据点从 Arduino 到 MATLAB 之后生成并发送时间戳。数据在 Arduino 端完美生成——串行监视器上没有任何问题。

然而,在 MATLAB 中,我的数据矩阵充满了相当多的 NaN,以及偶尔缺少第一位数字的整数。例如,不是 216 度,而是 16 度,或者不是 7265900 微秒,而是 265900 微秒。

我已经能够通过使用 Arduino 的 millis() 时钟而不是 micros() 时钟并在编码器读取后添加 50 毫秒的延迟来解决丢失时间数据的问题。如果我在毫秒()时钟之后增加延迟,度数数据丢失的问题就会消失,但是度数数据采集变得太慢而无法使用。

任何帮助将非常感激!

代码粘贴在下面。首先是 Arduino 代码,然后是 MATLAB 代码。

谢谢!

大卫



(getserialport 函数由以下 m 文件定义)