matlab:将矢量转换为字符串的单元格数组

时间:2012-05-30 14:08:09

标签: matlab cell

我确信有办法做到这一点,但我不知道它是什么。

假设我有一个向量

v = [1.02 2.03 3.04];

我希望使用每个元素的格式字符串将其转换为单元格数组:

'   %.3f'

(%。3f前3个空格)

我该怎么做?我尝试了以下方法,但是我收到了一个错误:

>> f1 = @(x) sprintf('   %.3f',x);
>> cellfun(f1, num2cell(v))
??? Error using ==> cellfun
Non-scalar in Uniform output, at index 1, output 1.
Set 'UniformOutput' to false.

3 个答案:

答案 0 :(得分:6)

如错误中所述,只需将UniformOutput的参数设为false

cellfun(f1, num2cell(v), 'UniformOutput', false)

ans = 

    '   1.020'    '   2.030'    '   3.040'

答案 1 :(得分:2)

这是另一种解决方案:

>> v = [1.02 2.03 3.04];
>> strcat({'   '}, num2str(v(:),'%.3f'))
ans = 
    '   1.020'
    '   2.030'
    '   3.040'

显然,如果你想要一个行向量,你可以调换结果。

答案 2 :(得分:1)

您还可以使用{}语法:

 cellfun(@(x){f1(x)}, num2cell(v)) 

另请查看:Applying a function on array that returns outputs with different size in a vectorized manner