matlab中動態變數命名及賦值高階

2021-10-06 06:17:07 字數 1781 閱讀 1680

在了解到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...