Как мне собрать октаву 3.8.2?
Я пытаюсь использовать oct2py для запуска кода Matlab, потому что у меня нет Matlab. Я загрузил октаву 3.8.2 из репозитория github, но readme не сильно помогает.
Код загружает набор данных и передает его в функцию octave/matlab, но затем я получаю эту ошибку:
Traceback (most recent call last):
File "psycheeg.py", line 23, in <module>
out = octave.EEGClustering(sigbufs, 1, 44100, 7, 1)
File "/home/iman/anaconda3/lib/python3.6/site-packages/oct2py/dynamic.py", line 96, in __call__
return self._ref().feval(self.name, *inputs, **kwargs)
File "/home/iman/anaconda3/lib/python3.6/site-packages/oct2py/core.py", line 369, in feval
store_as=store_as, plot_dir=plot_dir)
File "/home/iman/anaconda3/lib/python3.6/site-packages/oct2py/core.py", line 568, in _feval
raise Oct2PyError(msg)
oct2py.utils.Oct2PyError: Octave evaluation error:
error: 'rng' undefined near line 5 column 1
Я читаю что-то в Интернете, и кажется, что это может сработать, если я использую старую версию октавы.
Код Python:
import pyedflib
import sklearn
import matplotlib.pyplot as plt
import numpy as np
try:
print('no matlab')
import matlab.engine
eng = matlab.engine.start_matlab()
except:
from oct2py import octave
import pprint
#octave.addpath('/spectralcluster')
f = pyedflib.EdfReader("134_aliengonogo_parent.bdf")
n = f.signals_in_file
signal_labels = f.getSignalLabels()
sigbufs = np.zeros((n, f.getNSamples()[0]))
for i in np.arange(n):
sigbufs[i, :] = f.readSignal(i)
print(sigbufs.shape)
out = octave.EEGClustering(sigbufs, 1, 44100, 7, 1)
pprint.pprint(out)
Код Matlab работает отлично.