Unpack arrayfun output into different variables

2 ビュー (過去 30 日間)
Raphael Alhadef
Raphael Alhadef 2019 年 11 月 10 日
コメント済み: Raphael Alhadef 2019 年 11 月 10 日
I am trying to use sprintf on an array of strings and store the output strings in individual variables, but I am failing on the syntax.
I tried:
a = ["f","g","h"];
tf = @(x) sprintf('%s%s','C:\',x);
[m,n,o] = arrayfun(tf,a,'UniformOutput',false);
I get an error reading:
Error using sprintf
Too many output arguments.
Error in Untitled>@(x)sprintf('%s%s','C:\',x)
The ouptut is a 1x3 cell, so I hope this should be possible. Thank you

採用された回答

the cyclist
the cyclist 2019 年 11 月 10 日
No, it is not possible.
It is true that the output of arrayfun in this case is a 1x3 cell array. And you may feel that it is obvious that MATLAB should then parse that into your three variable. But MATLAB actually cannot "know" that that is what you mean. Specifically, it cannot know which of the following you want for your output:
  1. m = 1x1 cell; n = 1x1 cell; o = 1x1 cell
  2. m = 1x3 cell; n = empty; o = empty
  3. m = 1x2 cell; n = 1x1 cell; o = empty
  4. ... and so on ...
You'll need to parse that yourself. (I would suggest that maybe keeping them in a cell array rather than separate variables might actually be the better design.)
  1 件のコメント
Raphael Alhadef
Raphael Alhadef 2019 年 11 月 10 日
I understand, thank you for the clarification.

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

その他の回答 (0 件)

カテゴリ

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

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by