你的环境已经完全配置好!
- ✅ MATLAB R2025b 已安装
- ✅ 所有6个必需工具箱已安装
- ✅ MATLAB Engine API for Python 已安装
- ✅ conda matlab环境已配置
我为你创建了以下文件:
| 文件 | 用途 |
|---|---|
python_matlab_wrapper.py |
SpinachEngine封装类 |
spinach_demo.py |
交互式示例程序 ⭐ |
run_spinach_example.py |
自动化启动示例 |
test_matlab_connection.py |
连接测试脚本 |
check_toolboxes.m |
工具箱检查脚本 |
INSTALL_TOOLBOXES_GUIDE.md |
工具箱安装指南 |
# 激活conda环境
conda activate matlab
# 进入项目目录
cd /home/tony/Spinach-2.10.1
# 运行交互式演示
python spinach_demo.py这会显示菜单让你选择不同的示例。
import matlab.engine
# 启动MATLAB引擎
eng = matlab.engine.start_matlab()
# 配置Spinach
eng.cd('/home/tony/Spinach-2.10.1')
eng.run_spinach('add', nargout=0)
# 现在可以调用任何Spinach函数!
eng.version() # 获取MATLAB版本
# 完成后关闭
eng.quit()from python_matlab_wrapper import SpinachEngine
with SpinachEngine() as spinach:
# 执行MATLAB命令
result = spinach.execute_command("1 + 1")
# 调用Spinach函数
spin_system = spinach.call_spinach_function('bootstrap', 'hush')
# 运行脚本
spinach.run_simulation('examples/nmr_liquids/basic_2spin.m')Spinach包含623个示例脚本,按类别组织:
基础知识 (examples/fundamentals/):
- 基本自旋系统设置
- 哈密顿量构建
- 演化算子
液体NMR (examples/nmr_liquids/):
basic_2spin.m- 基本二自旋系统cosy_demo.m- COSY谱仿真hsqc_demo.m- HSQC谱
固体NMR (examples/nmr_solids/):
- 魔角旋转(MAS)
- 多量子谱
弛豫理论 (examples/relaxation_theory/):
- T1/T2弛豫
- NOE效应
import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd('/home/tony/Spinach-2.10.1')
eng.run_spinach('add', nargout=0)
# 创建系统参数
sys = eng.struct()
sys.magnet = 9.4 # 磁场强度
sys.isotopes = matlab.str(['1H', '13C']) # 同位素
# 调用create函数
spin_system = eng.create(sys)# 运行液体NMR示例
eng.cd('/home/tony/Spinach-2.10.1/examples/nmr_liquids')
eng.run('basic_2spin.m')import numpy as np
from python_matlab_wrapper import AdvancedSpinachWrapper
wrapper = AdvancedSpinachWrapper()
# NumPy数组转MATLAB
data = np.array([[1, 2], [3, 4]])
matlab_data = wrapper.numpy_to_matlab(data)
wrapper.engine.set_variable('data', matlab_data)
# 在MATLAB中处理
wrapper.engine.execute_command("result = data * 2")
# 获取结果并转回NumPy
result = wrapper.engine.get_variable('result')
final_result = wrapper.matlab_to_numpy(result)% 查看Spinach版本
version
% 获取帮助
help create
help spin_system
% 列出当前工作区变量
whos
% 设置工作目录
cd('/home/tony/Spinach-2.10.1/examples/nmr_liquids')
% 运行脚本
run('basic_2spin.m')# 执行MATLAB命令
eng.eval('version')
# 调用函数
eng.function_name(arguments)
# 获取变量
var = eng.workspace['variable_name']
# 设置变量
eng.workspace['var_name'] = value- Spinach Wiki: https://spindynamics.org/wiki/
- GitHub: https://github.com/Spindynamics/spinach
- 第一步: 运行
spinach_demo.py选择示例2,查看基础教程 - 第二步: 运行
examples/nmr_liquids/basic_2spin.m理解基本流程 - 第三步: 阅读
examples/fundamentals/中的脚本 - 第四步: 修改示例参数,创建自己的仿真
eng.cd('/home/tony/Spinach-2.10.1/examples/nmr_liquids')
# 设置系统参数
eng.eval("sys.magnet=9.4;")
eng.eval("sys.isotopes={'1H'};")
eng.eval("sys.groups={{'spin1'}};")
# 创建并运行
eng.run('your_1d_simulation.m')# COSY谱示例
eng.run('cosy_demo.m')
# HSQC谱示例
eng.run('hsqc_demo.m')- 并行池: Spinach会自动启动31个工作进程,这是正常的
- 内存: 大规模仿真可能需要大量内存
- 时间: 复杂仿真可能需要较长时间
- 路径: 确保每次都先运行
run_spinach('add')
# 重新安装
cd /home/tony/matlab/extern/engines/python
/home/tony/anaconda3/envs/matlab/bin/python -m pip install .# 确保Spinach路径已添加
eng.cd('/home/tony/Spinach-2.10.1')
eng.run_spinach('add', nargout=0)# 检查并行池状态
eng.eval('gcp('nocreate')')
# 删除现有池
eng.eval('delete(gcp('nocreate'))')启动: conda activate matlab
进入: cd /home/tony/Spinach-2.10.1
演示: python spinach_demo.py
测试: python test_matlab_connection.py
现在你可以:
- ✅ 运行
python spinach_demo.py开始探索 - ✅ 查看
examples/目录中的623个示例 - ✅ 访问 https://spindynamics.org/wiki/ 获取详细文档
- ✅ 修改示例创建你自己的NMR仿真
祝你使用愉快! 🧪✨