Matlab eval()函數

轉載1:https://blog.csdn.net/sinat_32547403/article/details/53256463

help eval 將看到matlab自帶的說明
eval Execute string with MATLAB expression. eval(s), where s is a string, caus
es MATLAB to execute the string as an expression or statement.
翻譯一下,就是說eval函數的功能是將字符串轉換爲matlab可執行語句。通俗而言,比如
你輸入
a=’b=1’;
會在workspace裏看見生成了變量a,a的類型是字符串,字符串的內容是b=1
然後你輸入eval(a)
就會看見變量裏生成了變量b,b是一個1乘1的double型矩陣,元素的值爲1
也就是說,執行eval(a)相當於執行a的內容,相當於執行b=1
如果說for語句可以將數字進行循環,那麼eval結合for語句後,則大大提高其循環範圍,
比如你要載入一些數據,m1.mat,m2.mat等等一直到m100.mat
普通青年可能會這樣寫程序
load m1.mat
load m2.mat
然後一直寫100行,這顯然太笨了!但普通的for語句又無法完成
於是eval函數結合for語句就體現出其價值了
for i=1:100
eval([‘load ’ num2str(i) ‘.mat’])
end
只需要三行!
除此之外,eval還廣泛用於人機交互,因爲matlab的gui中,get命令得到的str格式的字符
串,通常,會通過str2num將字符串轉換爲數字,供後續處理。而如果讀入的str字符串是
cos,sin之類的指令呢?那麼就需要結合eval函數,將字符串轉換爲指令。

轉載2:https://blog.csdn.net/dujiahei/article/details/80961529?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2

help eval 將看到matlab自帶的說明
eval Execute string with MATLAB expression. eval(s), where s is a string, caus
es MATLAB to execute the string as an expression or statement.
翻譯一下,就是說eval函數的功能是將字符串轉換爲matlab可執行語句。通俗而言,比如
你輸入
a=‘b=1’;
會在workspace裏看見生成了變量a,a的類型是字符串,字符串的內容是b=1
然後你輸入eval(a)
就會看見變量裏生成了變量b,b是一個1乘1的double型矩陣,元素的值爲1
也就是說,執行eval(a)相當於執行a的內容,相當於執行b=1
如果說for語句可以將數字進行循環,那麼eval結合for語句後,則大大提高其循環範圍,
比如你要載入一些數據,m1.mat,m2.mat等等一直到m100.mat
普通青年可能會這樣寫程序
load m1.mat
load m2.mat
然後一直寫100行,這顯然太笨了!但普通的for語句又無法完成
於是eval函數結合for語句就體現出其價值了
for i=1:100
eval(['load ’ num2str(i) ‘.mat’])
end
只需要三行!
除此之外,eval還廣泛用於人機交互,因爲matlab的gui中,get命令得到的str格式的字符
串,通常,會通過str2num將字符串轉換爲數字,供後續處理。而如果讀入的str字符串是
cos,sin之類的指令呢?那麼就需要結合eval函數,將字符串轉換爲指令。

有人問,我想生成100個變量,取名分別爲A1~A100,怎麼弄?
大部分人可能會認爲無法實現,其實不然。這裏以幾個實例說明此類功能的實現。
針對上面提及的問題,給出一段代碼,生成100個3*3隨機變量,取名A1~A100:

for i=1:100
eval([‘A’,num2str(i),’=rand(3);’])
end
複製代碼

實例2
論壇之前有童鞋問,有變量a=‘b’,能不能將’b’變成一個變量名,將值賦給變量b。
這裏就可以用eval命令解決。
a=‘b’;
temp=200;%先將值賦給臨時變量temp
eval([a,’=temp;’]); %注意!這裏a是不帶引號的!生成變量b,將temp的值賦給b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章