簡體   English   中英

如何從GUI向Matlab仿真工作區struct()提供輸入

[英]How do i give input from my GUI to my matlab simulation workspace struct()

我目前正在研究在MathWorks上實現鋰電池模型的模擬器,並且在從GUI運行模擬時,我需要熟練地更改幾個參數。

原始參數在編譯后駐留在工作區結構中,因此我想這是我需要更改參數的地方。

讀取的原始文件如下:

%% Populate Lookup Tables
BatteryParams = struct();
for idx = 1:numCells

    %% Lookup Table Breakpoints
    BatteryParams(idx).SOC_LUT = [0 0.1 0.25 0.5 0.75 0.9 1]';
    BatteryParams(idx).Temperature_LUT = [5 20 40] + 273.15;

    %% Em Branch Properties (OCV, Capacity)

    % Battery capacity
    BatteryParams(idx).Capacity_LUT = [
        80.0000   79.5000   79.0000]; %Ampere*hours

現在,我希望能夠在仿真過程中更改電池的容量,但由於對simulink還是比較陌生,因此我對如何執行此操作一無所知。

我認為它應該包含:

command = sprintf('BatteryParams(%d).Qe_init = %f;', idx, value)
evalin('base', command);

但是我不確定如何實現此目標,此外,我還需要能夠在GUI中輸入例如80Ah,然后將數組放入包含{80.5 80 79.5}的結構中

誰能幫助我實現這一目標?

Simulink並非真正為實現此目的而設計,它僅在仿真開始時在模型初始化期間檢查(基本)工作空間中的值,有關類似問題,請參見如何在運行時期間從From工作空間塊中更新變量

您可以在更改工作空間中的參數值后嘗試使用set_param ,例如:

set_param(path_to_block,block_parameter_name,BatteryParams)

path_to_block替換為相關塊的正確路徑,並將block_parameter_name為要為相關塊更改的正確參數。 如果從GUI運行此程序,則可能需要使用evalevalin

還要注意,這不適用於所有塊/參數,正如您在前面提到的另一個問題中所看到的。

暫無
暫無

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

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