gpt4 book ai didi

python - 将matlab代码转换为python

转载 作者:太空狗 更新时间:2023-10-30 01:29:20 25 4
gpt4 key购买 nike

好吧,我有一个来自脑电图扫描的数据文件(一个二进制文件,data.eeg),在 matlab 中读取文件和绘制数据部分的代码如下所示:

sr=400;                                                     % Sample Rate
Nyq_freq=sr/2; % Nyquist Frequency
fneeg=input('Filename (with path and extension) :', 's');
t=input('How many seconds in total of EEG ? : ');
ch=input('How many channels of EEG ? : ');
le=t*sr; % Length of the Recording
fid=fopen(fneeg, 'r', 'l'); % Open the file to read
EEG=fread(fid,[ch,le],'int16'); % Read Data -> EEG Matrix
fclose ('all');
plot(EEG(:,3))

这是我“翻译”的尝试

from numpy import *
from matplotlib.pylab import *

sample_rate = 400
Nyquist = sample_rate/2.
fneeg = raw_input("Filename (full path & extension): ")
t = int(raw_input("How many secs in total of EEG?: "))
ch = int(raw_input("How many channels of EEG?: "))
le = t*sample_rate
fid = open(fneeg, 'r')
EEG = fromfile(fneeg, int16)

这就是让我感到困惑的地方。根据文档,matlab的fread是一种通过fread(loaded_file, size, data_type)读取二进制文件的方法。 python 中的替代方法是使用 numpy 的 fromfile 和 reshape(根据此处的线程:MATLAB to Python fread)使用内置的 reshape 函数。我不确定这是如何工作的,甚至与 matlab 方法有关?如果我的问题令人困惑,我很抱歉,matlab 对我来说还是很新

编辑:如果你想看看这里的文件,它是:https://www.dropbox.com/s/zzm6uvjfm9gpamk/data.eeg

Edit2:原始输入的答案是 t=10,ch=32。事实上,我不确定我现在为什么要征求用户意见……

最佳答案

正如您和@JoeKington 在评论中所讨论的那样,这应该可行(我删除了输入内容以进行测试)

import numpy as np

sample_rate = 400
Nyquist = sample_rate/2.0
fneeg = 'data.eeg'
t = 10
ch = 32
le = t*sample_rate
EEG = np.fromfile(fneeg, 'int16').reshape(ch, le, order='F')

如果不 reshape ,您会得到:

In [45]: EEG
Out[45]: array([ -39, -25, -22, ..., -168, -586, -46], dtype=int16)

In [46]: EEG.shape
Out[46]: (128000,)

reshape :

In [47]: EEG.reshape(ch, le, order='F')
Out[47]:
array([[ -39, -37, -12, ..., 5, 19, 21],
[ -25, -20, 7, ..., 20, 36, 36],
[ -22, -20, 0, ..., 18, 34, 36],
...,
[ 104, 164, 44, ..., 60, -67, -168],
[ 531, 582, 88, ..., 29, -420, -586],
[ -60, -63, -92, ..., -17, -44, -46]], dtype=int16)

In [48]: EEG.reshape(ch, le, order='F').shape
Out[48]: (32, 4000)

关于python - 将matlab代码转换为python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com