def Peak_Picking_function(acc,Fs,new_f,filtering,PSDfangfa,m,if_log,draw,percent,minpeakdist): engine.cd(r'/Data/SHZX_output/Matlab_Functions') [Frequency,PSD,Locs,Peaks] = engine.ANPSD_function_py( matlab.double(np.array(acc).tolist()), float(Fs), 'filtering', matlab.double(filtering), 'PSDfangfa', float(PSDfangfa), 'm', float(m), 'if_log', float(if_log), 'draw', float(draw), 'percent', float(percent), 'minpeakdist', float(minpeakdist), 'new_f', float(new_f), nargout=4) ANPSD = pd.DataFrame([]); Peak = pd.DataFrame([]) ANPSD['Frequency'] = list(Frequency[0]) ANPSD['ANPSD'] = list(PSD[0]) try: Peak['f'] = list(Locs[0]) Peak['ANPSD'] = list(Peaks[0]) except: Peak['f'] = [Locs] Peak['ANPSD'] = [Peaks] return(Peak, ANPSD)
def execute(lines): if type(engine)!=matlab.engine.matlabengine.MatlabEngine: print "I do not find a matlab engine" return oldworkingdir = engine.pwd() workingdir = vim.eval("expand('%:p:h')") fscript = workingdir+'/tmpscriptAZWKL.m' with open(fscript,'w') as script: for line in lines: script.write(line+'\n') result = StringIO.StringIO() engine.cd(workingdir,nargout=0) try: engine.tmpscriptAZWKL(nargout=0,stdout=result,stderr=result) except matlab.engine.MatlabExecutionError: pass engine.cd(oldworkingdir,nargout=0) remove(fscript) print result.getvalue()
def SSICOV_function(acc,Ts,Fs,new_f,filtering,if_log,draw,draw_matlab,Xrange,eps_freq): SSI = pd.DataFrame([]) engine.cd(r'/Data/SHZX_output/Matlab_Functions') [fn,zeta,phi,plotdata] = engine.SSICOV_function_py( matlab.double(np.array(acc).tolist()), float(Fs), 'Ts', Ts, # 这个越长越精准,但速度会受影响 'new_f', float(new_f), # 降采样之后反而效果更好了,可能是因为所受的干扰信息少了 'methodCOV', 1, # 方法1精度更高 'Nmin', float(1), 'Nmax', float(50), 'filtering', matlab.double(filtering), 'draw', draw, 'draw_matlab', draw_matlab, 'Xrange', matlab.double(Xrange), 'if_log', if_log, 'eps_freq', eps_freq, nargout=4) if draw: # stable pole : 频率、阵型、阻尼同时满足精度要求 # stable freq.& MAC : 频率、阵型满足精度要求 # stable freq.& damp.: 频率、阻尼满足精度要求 # stable freq.: 频率满足精度要求 all_pole = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][0])],[list(x)[0] for x in list(plotdata[1][0])]]).T stable_pole = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][1])],[list(x)[0] for x in list(plotdata[1][1])]]).T stable_freq_MAC = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][2])],[list(x)[0] for x in list(plotdata[1][2])]]).T stable_freq_damp = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][3])],[list(x)[0] for x in list(plotdata[1][3])]]).T stable_freq = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][4])],[list(x)[0] for x in list(plotdata[1][4])]]).T all_pole['mark'] = 'all pole'; stable_pole['mark'] = 'stable pole'; stable_freq_MAC['mark'] = 'stable freq. & MAC'; stable_freq_damp['mark'] = 'stable freq. & damp.'; stable_freq['mark'] = 'stable freq.' SSI_data = pd.concat([all_pole,stable_pole,stable_freq_MAC,stable_freq_damp,stable_freq], ignore_index =True); SSI_data.columns = ['frequency', 'mode', 'mark'] PP_data = pd.DataFrame([list(plotdata[2][0]), list(plotdata[3][0])]).T; PP_data.columns = ['frequency', 'mode'] SSI_data = SSI_data[SSI_data['frequency']<=Xrange[1]].drop_duplicates() PP_data = PP_data[PP_data['frequency']<=Xrange[1]] else: SSI_data = ''; PP_data = '' try: SSI['fn'] = list(fn[0]) SSI['zeta'] = list(zeta[0]) except: SSI['fn'] = [fn] SSI['zeta'] = [zeta] return(SSI, SSI_data, PP_data)
def get_efms(N, reversibility, verbose=True, efmtool_path=os.getcwd()): """ Uses Matlab and EFMtool (https://csb.ethz.ch/tools/software/efmtool.html) to calculate the EFMs of a model. :param N: stoichiometry matrix :param reversibility: list of booleans indicating if reaction is reversible :param verbose: :param efmtool_path: Path to where EFM software is installed on machine :return: matrix with efms """ import matlab.engine engine = matlab.engine.start_matlab() engine.cd(efmtool_path) result = engine.CalculateFluxModes(matlab.double([list(row) for row in N]), matlab.logical(reversibility)) if verbose: print('Fetching calculated EFMs') size = result['efms'].size shape = size[1], size[0] # _data is in transposed form w.r.t. the result matrix efms = np.reshape(np.array(result['efms']._data), shape) if verbose: print('Finishing fetching calculated EFMs') return efms
def execute(lines): if type(engine) != matlab.engine.matlabengine.MatlabEngine: print("I do not find a matlab engine") return oldworkingdir = engine.pwd() workingdir = vim.eval("expand('%:p:h')") fscript = workingdir + '/tmpscriptAZWKL.m' with open(fscript, 'w') as script: for line in lines: script.write(line + '\n') result = io.StringIO() engine.cd(workingdir, nargout=0) try: engine.tmpscriptAZWKL(nargout=0, stdout=result, stderr=result) except matlab.engine.MatlabExecutionError: pass engine.cd(oldworkingdir, nargout=0) remove(fscript) message = result.getvalue() maxOutputChars = int(vim.eval("g:matvim_max_outputchars")) if maxOutputChars > 0 and len(message) > maxOutputChars: message = message[0:maxOutputChars-1]+ \ " ...\nWarning: Message is longer than g:matvim_max_outputchars" print(message)
def run_m(m_path): main_path = '\\'.join(m_path.split('\\')[:-1]) name = m_path.split('\\')[-1].split('.')[0] engine.cd('E:\\【论文】\\【小论文】\\宁波南站\\脚本控制器\\操控Matlab') engine.Control_Matlab(main_path, name)
import os import matlab.engine # TODO: Life would be easier if we used an existing MATLAB engine # so we didn't have to restart MATLAB each time. # https://www.mathworks.com/help/matlab/matlab_external/connect-python-to-running-matlab-session.html engine = matlab.engine.start_matlab() engine.cd(os.path.dirname(os.path.realpath(__file__))) engine.triarea(nargout=0)
model.compile(optimizer=SGD(lr=learning_rate), loss=loss_func) # load pretrain model if model_pretrain != '': model.load_weights(model_pretrain, by_name=True) # neumf_pretrain = 'Pretrain/gene_NeuMF_8_[64]_0.050.h5' # model.load_weights(neumf_pretrain,by_name=True) # print("Load pretrained NeuMF (%s) models done. " %(neumf_pretrain)) # Load pretrain model # Init performance engine = matlab.engine.start_matlab() cur_path = os.getcwd() engine.cd(cur_path, nargout=0) cdf_t, recall_t = -1, -1 print('Init: cdf = %.6f, recall = %.6f' % ( cdf_t, recall_t, )) best_cdf, best_recall, best_iter = cdf_t, recall_t, -1 # Training model plot_model(model, to_file='%s.png' % training_model.lower()) model.summary() for epoch in xrange(1, num_epochs + 1): t1 = time() # Generate training instances user_input, item_input, labels = get_train_instances(
temp_data.iloc[:, 1].mean()).abs() < 3 * temp_data.iloc[:, 1].std()] new_data = pd.concat([new_data, temp_data], ignore_index=True) data = new_data # 是否取对数 if if_log: data.iloc[:, 1] = np.log(data.iloc[:, 1]) time_series = np.array(range(1, 1441)) time_stamp = np.array(data.iloc[:, 0]) RMS = np.array(data.iloc[:, 1]) if if_Matlab: # 高斯过程回归Matlab engine.cd('E:\\【论文】\\【小论文】\\宁波南站\\Matlab脚本\\GPR') engine.GaussianProcessRegression( matlab.double(time_stamp.tolist())[0], matlab.double(RMS.tolist())[0], matlab.double(time_series.tolist())[0]) else: # 高斯过程回归Python # 抽取子集 data_sample = data.sample(3000) time_stamp_sample = np.array(data_sample.iloc[:, 0]) RMS_sample = np.array(data_sample.iloc[:, 1]) # 高斯回归 from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import Matern gp_kernel = 1.0 * Matern( length_scale=1, length_scale_bounds=(1e-2, 1e2), nu=1.5)
def render_diagram(app, node, docname): global engine uri = node['uri'] # do not regenerate if os.path.exists(uri): pass ensuredir(os.path.dirname(uri)) try: # reuse last engine to save loading time if engine == None: engine = matlab.engine.start_matlab() else: # clean up used engines engine.restoredefaultpath(nargout=0) engine.close('all', nargout=0) engine.bdclose('all', nargout=0) engine.clear('classes', nargout=0) # start engine from document directory engine.cd(os.path.dirname(app.env.doc2path(docname))) # then, support changing directory (relative to document) dir = node.get('dir') if dir: engine.cd(dir) # finally, add the MATLAB paths relative to the changed directory pathlist = node.get('addpath') if pathlist: for path in pathlist: engine.addpath(path) # preload script preload = node.get('preload') if preload: engine.eval(preload + ';', nargout=0) # load system system = node.get('system') if system: engine.load_system(system) # if subsystem specified, print from this layer subsystem = node.get('subsystem') if subsystem: system = "/".join([system, subsystem]) # print from Simulink handle to .png engine.eval( "print( get_param( '{}', 'Handle' ), '-dpng', '{}' )".format( system, uri), nargout=0) except matlab.engine.MatlabExecutionError as err: raise SimulinkDiagramError('Unable to render Simulink diagram due ' + 'to MATLAB execution error')
from waitress import serve from flask import request from flask import Flask import time import json if __name__ == '__main__': app = Flask(__name__) # initialize MATLAB engine = matlab.engine.start_matlab() engine.cd('./matlab') engine.addpath('./utils') @app.route('/api/vrptw', methods=['POST']) def callVrptw(): req_json = request.json if req_json is None or req_json == 'null': return 'Error parsing request! Should be in JSON format!' incidence_mat = req_json['incidenceMat'] cost_mat = req_json['costMat'] edge_time_vec = req_json['edgeTimeV'] start_vec = req_json['startV'] end_vec = req_json['endV'] distr_vec = req_json['nodeDistributionV']
def render_diagram(app, node, docname): global engine uri = node['uri'] # do not regenerate if os.path.exists( uri ): pass ensuredir( os.path.dirname( uri ) ) try: # reuse last engine to save loading time if engine == None: engine = matlab.engine.start_matlab() else: # clean up used engines engine.restoredefaultpath(nargout=0) engine.close('all', nargout=0) engine.bdclose('all', nargout=0) engine.clear('classes', nargout=0) # start engine from document directory engine.cd( os.path.dirname( app.env.doc2path( docname ) ) ) # then, support changing directory (relative to document) dir = node.get('dir') if dir: engine.cd( dir ) # finally, add the MATLAB paths relative to the changed directory pathlist = node.get('addpath') if pathlist: for path in pathlist: engine.addpath( path ) # preload script preload = node.get('preload') if preload: engine.eval( preload + ';', nargout=0) # load system system = node.get('system') if system: engine.load_system( system ); # if subsystem specified, print from this layer subsystem = node.get('subsystem') if subsystem: system = "/".join( [ system, subsystem ] ) # print from Simulink handle to .png engine.eval( "print( get_param( '{}', 'Handle' ), '-dpng', '{}' )". format( system, uri ), nargout=0 ) except matlab.engine.MatlabExecutionError as err: raise SimulinkDiagramError('Unable to render Simulink diagram due ' + 'to MATLAB execution error' )