簡體   English   中英

MATLAB-MATLAB 32位和64位之間的交互

[英]MATLAB - interaction between MATLAB 32bit and 64bit

問題

我有兩個用MATLAB編寫的工具 (我不是作者):

  1. 第一個允許我從SQL數據庫檢索一些數據 ,但是它僅適用於MATLAB 64位 (我有MATLAB 2016b 64位)。
  2. 第二個使用從第一個工具檢索的數據,並通過在32位系統上編譯的DLL獲得一些輸出。 如前所述,該工具僅適用於MATLAB 32bit (我擁有MATLAB 2013a 32bit)。

我想做的是:

  1. 在MATLAB 64位中從SQL獲取數據
  2. 以某種方式“發送”到MATLAB 32bit
  3. 在MATLAB 32bit上運行該工具
  4. 將輸出從MATLAB 32位“返回”到MATLAB 64位

我知道可以使用IPC機制找到解決方案,但不確定如何在MATLAB中找到它們或如何使用它們。 有沒有人曾經用過這種東西?

查看MATLAB文檔,我發現可以創建一個COM對象 ,但是我不確定如何使用它在MATLAB 32bit中運行某些功能。

如下面的@nekomatic所建議的,如果我以建議的方式運行代碼,則一切對我都有效,但是從下面的系統命令中排除了-automatic 最終系統命令的格式為

system('"C:\path\to\R2013a\matlab.exe" -wait -r "mycommand; exit"')

mycommand是一個MATLAB腳本,它會加載輸入文件,先執行一些操作,然后保存輸出文件。

如果您不需要快速執行此操作,最簡單的方法可能是:

  • 將64位MATLAB中的數據另存為.mat文件
  • 使用system命令啟動32位MATLAB的實例
  • 在32位MATLAB中運行腳本,該腳本從文件中讀取數據,對其進行處理並保存
  • 將結果讀回64位程序。

例如,64位代碼(不包括錯誤處理,當前文件夾設置等)可能看起來像這樣:

delete result.mat % Delete any result from the previous run
save(data.mat, '-v7.3') % usually best to specify the .mat format to use
system('"C:\path\to\R2013a\matlab.exe" -automation -wait -r "mycommand; exit"')
processedData = load('result.mat')

其中, mycommand是您的MATLAB R2013a腳本,該腳本從data.mat中讀取數據,進行處理,並將結果保存在result.mat

有關R2013a的啟動選項( 此處為Windows)和有關R2016b的system命令的更多數據,請參見此處 您可能需要使用Mathworks帳戶登錄才能查看舊版本的文檔,但是如果有問題,只需查看各自MATLAB安裝中的幫助即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM