フィルターのクリア

How to use svd in cellfun?

1 回表示 (過去 30 日間)
Xh Du
Xh Du 2017 年 1 月 5 日
コメント済み: Adam 2017 年 1 月 5 日
Hello,
I'd like to use svd in cellfun. Imagine a multidimensional cell like this:
inst = cell(1, 3, 5, 2);
inst(:,:,1,1) =
[308x21 double] [308x21 double] [308x21 double]
Each element of inst is a 308*21 double. Now I'd like to apply SVD on each element of inst to extract the singular values, so I write this:
instsvd = cellfun(svd, inst, 'UniformOutput', false);
MATLAB gives me error:
Error using svd
Not enough input arguments.
Any idea how to solve this?
Many thanks!

採用された回答

Adam
Adam 2017 年 1 月 5 日
編集済み: Adam 2017 年 1 月 5 日
instsvd = cellfun(@(x) svd(x), inst, 'UniformOutput', false);
The first argument to cellfun should be a function handle, you are passing the name of a function instead, with no arguments. The above should work and is using an anonymous function where 'x' is a placeholder for each of the elements of your cell array in turn.
  3 件のコメント
Xh Du
Xh Du 2017 年 1 月 5 日
Wow, thanks!
Adam
Adam 2017 年 1 月 5 日
Ah, yes, I keep forgetting that, I'm so used to just wrapping things in anonymous functions!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEigenvalues についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by