Octave 數字轉字元,連線兩個字串,以及如何將字串轉換為變數名稱

依齊發表於2020-11-29

最近因實驗需求,需要用程式碼有規律地自動生成變數名稱並宣告變數。通過翻閱資料,整理出來以下可行方案。

首先是有規律地生成變數名稱,我們可能需要生成變數名為list1,list2,list3……這樣的名稱,名稱中的字串“list”是固定不變的,後面跟的數字是變化的。我們想要用程式碼實現這一串變數名稱的自動生成,需要解決的問題有三個。第一個是:將數字轉換為字元。第二個是:拼接兩個字串。第三個是:將字串轉換成變數名稱。

將數字轉換為字元的方法在Octave中有num2str函式可供呼叫,例如將數字2轉換為字元,可以用以下語句:

num2str(2)

 更多例項:

拼接兩個字串,可以用以下幾種方法

1.通過 c=[a1,b1]格式拼接,例項如下

>> a = 'sdf'
a = sdf
>> b = 'dfgfg'
b = dfgfg
>> c = [a,b]
c = sdfdfgfg
>> d = ['dfd','fdf']
d = dfdfdf

2.通過呼叫函式 strcat來實現

>> a = 'sdf'
a = sdf
>> b = 'dfgfg'
b = dfgfg
>> d=strcat(a,b)
d = sdfdfgfg

將字串轉換為變數名稱

使用函式eval來實現

>> str = ['dsfd',num2str(4)]
str = dsfd4
>> eval( [str, '= zeros(1,6)'])
dsfd4 =

   0   0   0   0   0   0

好啦,到這裡所有的問題都解決了,我用程式碼迴圈生成了我需要的變數。list2,list3,list4……list10。

for c = 0.2:0.1:1
   str = ['list',num2str(c*10)]
   eval( [str, '= zeros(1,20)'])
endfor

str = list2
list2 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list3
list3 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list4
list4 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list5
list5 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list6
list6 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list7
list7 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list8
list8 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list9
list9 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

str = list10
list10 =

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

 

相關文章