有沒有辦法在matlab中有效定義多個變量?我發現的一切都不太符合我的要求。這是的情況:有效定義多個變量
parstrs = {'a','b','c'};
parvals = [1 2 3];
我想要一個有效的命令,實際上會做到以下;
parstrs = parvals;
其中結果是,數字1被存儲在變量a
,2存儲在b
,和3被存儲在c
等
我願意與細胞這樣做或結構。
有什麼建議嗎?
更多解釋:正如我在下面提到的,我想編寫代碼,不關心變量名稱列表在曲線擬合中使用多長時間。我發現最好的方法是使用結構,如下所示:
parstrs = {'a','b','c'};
parvals = num2cell([1 2 3]);
partmp = {parstrs{:};parvals{:}};
pars = struct(partmp{:});
這樣做的問題是,標準桿結構不能以同樣的方式進行編輯。也就是說,
pars = setfield(pars,partmp{:});
會拋出以下錯誤:
Error using setfield (line 48)
Inputs must be either cell arrays or strings.
你不能使用循環的最後一個命令,錯誤?當然是 –
。我甚至已經寫了一個multisetfield函數(還有一個在lightpeed工具箱中,可能會更快)。我只是試圖避免循環,因爲頌歌的rhs在優化運行中被稱爲1000次。 – dmbortz
如果其他人遇到這個問題,我的經驗是循環setfield命令是最好的。它需要約1/3的時間循環eval命令。 – dmbortz