簡體   English   中英

在Matlab函數中使用工作區變量

[英]Use workspace variables in a Matlab function

我想使用Matlab函數中加載到我的工作區中的數據。 這是我職能的開始。

function [totalProfit] = compute(p,exit)

%% Declaration of variables

entry=0;
T = length(data);
.
.
.
end

我收到一個錯誤:

未定義的函數或變量“數據”。

錯誤在哪里?

變量數據可能是在函數外部定義的,因此超出了范圍。

data作為參數傳遞進行compute ,然后在函數內部可用。

您可以使用evalin處理來自另一個工作空間的變量。 在您的示例中,這可能是

T = evalin('caller','length(data)')

但是請注意,在大多數情況下,如果將變量定義為函數的輸入參數,則會得到更簡潔的代碼。 所以對於你的情況,這將是

function [totalProfit] = compute(p,exit,data)    
   T = length(data) ;
end

冉是正確的,但我想提一提。 通常,只能在函數內部使用作為參數傳遞給函數的變量,因此,如果要在函數內部使用現有變量,請將其作為輸入參數傳遞。

可以創建全局變量,使您可以在函數內部使用它們而無需將它們作為參數傳遞,但這通常不是編寫代碼的最佳方法。 我使用全局變量的時候就是我從一個腳本中調用多個函數,並且我有一些常數將被所有函數使用(例如,重力是一個常見的常數)。 全局變量的另一種選擇是使用結構,將要傳遞給函數的變量包含在其中,因此您只需要一個額外的輸入參數,但是仍然要小心一點。

暫無
暫無

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

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