5

これを行う方法があると確信していますが、それが何であるかはわかりません。

私がベクトルを持っているとしましょう

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.
4

3 に答える 3

6

UniformOutputエラーで述べられているように、 asのパラメータを指定するだけですfalse

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

ans = 

    '   1.020'    '   2.030'    '   3.040'
于 2012-05-30T14:16:06.347 に答える
2

別の解決策は次のとおりです。

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

行ベクトルが必要な場合は、明らかに結果を転置できます。

于 2012-05-30T15:03:04.060 に答える
1

{}次の構文も使用できます。

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

また、チェックアウト:ベクトル化された方法で異なるサイズの出力を返す配列に関数を適用する

于 2012-05-30T21:00:14.890 に答える