在了解到eval()函式所實現功能的基礎上,可以把動態變數命名的問題轉換為如何通過迴圈構造合適的字串,再把字串作為eval()的輸入執行即可。
程式示例如下:
clear;clc;
for set1=1:
10for jklove=1:
10for kapa=1:
50fun
('hice=phiinkecejjj(slsajklove(1:2,:)'
',mkapa'
');'
,set1,jklove,kapa)
; end
endendfun
('hice=phiinkecejjj(slsajklove(1:2,:)'
',mkapa'
');'
,set1,jklove,kapa)
;function fun
(inname,varargin)
set1=
regexp
(inname,
'=',
'start');
%獲取=在輸入字串中的位置
temp_1=
inname(1
:set1-1)
;%獲取輸入字串中=左邊部分
input_2=
inname
(set1:end)
;%擷取=後的字串防止等號前的字串造成干擾
set2=
regexp
(input_2,
'(',
'start');
%獲取(所在位置
temp_2=
input_2(1
:set2(1
)-1)
;%擷取函式名稱部分
temp_3=
input_2
(set2(1
):end)
;%擷取函式輸入引數部分
numofinputvar=
size
(varargin,2)
;for temp_var1=
1:numofinputvar
varinput=
sprintf
('%s'
,inputname
(temp_var1+1)
);temp_1=
regexprep
(temp_1,varinput,
num2str
(cell2mat
(varargin
(temp_var1)))
);temp_3=
regexprep
(temp_3,varinput,
num2str
(cell2mat
(varargin
(temp_var1)))
);end %對變數名,函式輸入引數進行變數可變部分的匹配和替換
outname=
[temp_1,temp_2,temp_3]
;%將替換後的字串組合成結果字串
outname=
regexprep
(outname,
'''',''
'''');
%為使得字串在呼叫eval()不報錯,對字串中的'進行匹配並替換為'';
disp
(outname);%
eval
(outname)
;end
通過上述程式,完成了5000個動態變數的命名,發揮你的想象力,你值得更多。
matlab中的靜態變數與全域性變數
在matlab中,和其他語言一樣,函式中的變數一把都是區域性變數,也就是說,在函式呼叫完畢後,變數就會被釋放。但是有些時候回希望上次改變的變數在下一次呼叫時也能發揮作用。這時候就要永達靜態變數。關鍵字 persistent 用例 function rndnum rnd x produce rando...
python 自動生成動態變數及應用
在這裡我們需要exec函式 exec object globals locals object 必填 表示需要執行的python globals 選填 表示全域性命名空間 字典 locals 選填 表示當前區域性命名空間 字典 example 生成10個變數 q 0 q 1 q 2 q 3 q 4 ...
Matlab中變數的動態定義
在學習 機械人學 的時候,常常遇到轉換矩陣 ba t 這樣的表示,意思是座標系 轉換到座標系 的轉換矩陣,在程式設計的時候我通常都會寫作tab,如果給定了多個關節的dh參數列,有時候需要同時計算多個轉換矩陣,為了利用for迴圈來簡化 可以利用元胞陣列 cell 進行輸出 dh dh參數列設定 lin...