1

[ばかげた質問でごめんなさい。私はMATLABにまったく慣れていません(そしてMATLABに完全に戸惑っています)。]

1xnセルアレイのmx1セルアレイを唯一to2d引数として取り、対応するmxnセルアレイを返す関数を記述したいと思います。

たとえば、次のようなものが得られます。

>> A = {{1, 2}; {3, 4}; {5, 6}}

A = 

    {1x2 cell}
    {1x2 cell}
    {1x2 cell}

>> B = to2d(A)

B = 

    [1]    [2]
    [3]    [4]
    [5]    [6]

この質問は、プログラムで引数を変数引数関数に渡すというより一般的な問題の特殊なケースと考えることができます。これらの引数について知っているのは、それらがいくつかのセル配列に格納されていることだけです。Pythonでは、*-syntaxを使用してこれを行います。例えば

func_with_indeterminate_args(*a_runtime_list_of_args)

ありがとう!

4

2 に答える 2

3

関数が何をしているのかcat

>> cat(1,A{:})
ans = 
    [1]    [2]
    [3]    [4]
    [5]    [6]
于 2012-09-03T04:25:56.373 に答える
1

あなたの最初の質問は答えるのが簡単です:

function B = to2d(B)
    B = cat(1,B{:});
end

cat(の代わりに使用するための@Eastsunへの称賛[B{:}])。

2番目の質問については、任意の関数への引数をキャプチャして、ユーザーがアクセスできるセル配列に展開できますvarargin関数に渡される引数の総数には、によってアクセスできますnargin。例:

function B = to2d(B, varargin)

    if nargin == 1
        B = reshape([B{:}], size(B,1),[])

    else
        for ii = 1:nargin
            fprintf('Parsing argument %d\n', ii); 
            varargin{ii}
        end

    end
end

その後、電話

>> to2d(B)
B = 

    [1]    [2]
    [3]    [4]
    [5]    [6]

>> to2d(B, [0 0 0])
Parsing argument 1
ans = 
    {1x2 cell}
    {1x2 cell}
    {1x2 cell}

Parsing argument 2
ans = 
    [0 0 0]
于 2012-09-03T04:25:37.320 に答える