2012-09-29 52 views
2

我期待在matlab中找到映射函數。因此,這裏是我想的例子:matlab中的映射函數/像LISP中的mapcar的倍頻程

kvec = 0:1:16 
kvec = 

0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 

現在我想產生所謂的HVEC第二矢量基本上計算10^-k在kvec每個值。

有沒有一種優雅的方式來做到這一點?

在此先感謝。

回答

2

arrayfuncellfunspfunstructfunbsxfun在MATLAB一些有用的映射函數。

例如使用arrayfunhvec將計算這種方式:

hvec = arrayfun(@(x) 10^-x, kvec) 

此語法比使用陣列功率.^明顯更長的時間,但是作爲arrayfun映射函數它適用於任何給定功能,而只有幾個陣列功能可用(其運營商的第一個字符是.,如.^.*等)。

+0

非常感謝您的回覆。性能考慮如何? – user1172468

+0

至少'arrayfun','cellfun','spfun'和'structfun'也可以在GNU Octave中找到(見[here](https://www.gnu.org/software/octave/doc/v4.0.1/功能Application.html))。 – user3389669

3

我猜你需要的是

kvec = 0:1:16; 
hvec = 10 .^ -kvec