假設我有一個通用的MATLAB腳本,如下所示:
A = [1 2 0; 2 5 1; 4 10 1] 。
b = [1;3;5] 。
x = A;
r=A*x-b。
這些變數將被存盤在作業區。我怎樣才能將作業區的變數(A、b、x、r)下載到Excel表格中,這樣我就可以在Excel中修改這些變數,并將該Excel表格上傳到MATLAB的當前檔案夾中,讓作業區更新到我在Excel中做的改動?例如,我下載了Excel中的作業區。我打開Excel作業表,將r=A*x-b改為r='Hello World'。然后我把該作業表上傳到MATLAB上,新的 "r "就會在作業區中更新。
uj5u.com熱心網友回復:
請考慮以下方法作為參考
首先,你的陣列和操作可以被定義為字串,然后進行評估。請謹慎對待我的這部分建議,并確保你所評估的指令在語法上是有效的。請記住,eval函式有其自身的風險。
% Clean your workspace
清除
關閉
CLC
% 創建你的兩個陣列和附加變數。
A = [1 2 0; 2 5 1; 4 10 1] 。
b = [1;3;5] 。
% 將所有必要的操作定義為字串。請確保這些
%操作是絕對有效的,然后再繼續。在這里,你可以花
%一些時間來定義一些錯誤檢查邏輯。
x_oper = "A"。
r_oper = "A*x - b"。
% 為了安全起見,我們要評估這些指令是否有效,
% 否則我們會拋出一個錯誤 --> 錯別字和其他東西可能會出錯!。
try
x = eval(x_oper); % 要小心!
r = eval(r_oper); % be careful!
sprintf("expressions successfully evaluated!")
catch err
sprintf("錯誤評估運算式 >> %s
", err.message)
結束。
然后,這些值和指令可以被格式化為單獨的表格,保存為.csv檔案,可以使用excel(或者在我的例子中是LibreOffice)讀取。
將您的 "作業區 "內容保存為兩個不同的檔案。為了清楚起見,我使用一個檔案來保存數值,另一個檔案來保存操作
% Define to filenames
varsFile = "pseudo-workspace.csv"。
operFile = "operations.csv"/span>
% 將變數和操作/指令轉換為表格table(A, b, x, r)
instrTable = table(x_oper, r_oper)
% 將表格寫入各自的檔案中。
writetable(dataTable, varsFile)
writeetable(instrTable, operFile)
其中的dataTable看起來是這樣的:
而帶有操作的instrTable則是:
在這一點上,我們要做的是:
在這一點上,你的作業被保存在兩個不同的檔案中,并準備在其他地方進行編輯。也許你想與其他人或自己分享該檔案,以防你在不同的計算機上無法訪問Matlab,而你需要改變操作和/或數值。然后,在不同的.m檔案中,你把這些檔案讀到你當前的作業區,并把它們分配到相同的變數標簽中:
% Now we read the values and operations from a previous session or.
%在excel/text editor中進行外部編輯。
rawValuesTable = readtable(varsFile)
清除A % 我只清除我的變數,因為我在同一個m檔案上作業。
清除b
清除x
清除r
% 現在我們從上一個會話或讀取數值和操作。
% 在excel/text editor中進行外部編輯。
rawValuesTable = readtable(varsFile)
% 從剛剛讀取的表格中獲取A和b的值。
A = [rawValuesTable.A_1, rawValuesTable.A_2, rawValuesTable.A_3] 。
b = rawValuesTable.b。
rawOperations = readtable(operFile)。
% 操作是以單元格陣列的形式讀取的,因此我們需要
% 將它們作為字串來評估,只用后綴{1}。
try
x = eval(rawOperations.x_oper{1})
r = eval(rawOperations.r_oper{1})
sprintf("expressions successfully evaluated!")
catch err
sprintf("錯誤評估運算式 >> %s
", err.message)
結束。
最終獲得了相同的輸出,授予什么都沒有改變:
你可以使用兩個不同的函式執行這兩個程式(寫/讀)。再次強調,這是我對你的特殊情況的看法,你肯定會在此基礎上想出不同的想法
。轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/332638.html
標籤:

