ex [1 2 3] のベクトルを取得し、1 = [1 1]、2 = [4 6 8]、3 = [6 9 12 15 ] (実際の問題の短い例) したがって、私の関数は理想的には次のようになります。
convert([1 2 3]) = [1 1 4 6 8 6 9 12 15]
私の思考プロセスは、最初にベクトルをセル配列にして、値を異なる次元の他の値に置き換えてから、セル配列をベクトル/行列に戻す必要があるということです。これは私がこれまでに持っているものです
y = num2cell(x);
for n = 1:length(x)
if y{n} == 0
y{n} = [0 2];
elseif y{n} == 1
y{n}= [1 1];
elseif y{n} == 2
y{n} = [4 6 8];
elseif y{n} == 3
y{n} = [6 9 12 15];
elseif y{n} < 0
y{n} = 1 - convert(-(x+1));
end
output = cell2mat(y);
end
end
入力の初期ベクトルに 0、1、2、または 3 の正の値がある場合、すべて正常に動作します。ただし、ベクトルに負のエントリ (x) がある場合、負のエントリが次のように入力されるという条件が必要ですが、y{n} = 1 - convert(-(x+1))
これを行うと、再帰的な制限に達するというエラーが発生します。負の値で動作し、エラーが発生しないようにコードを修正する方法はありますか? また、for または while ループを使用せずにそれを行う方法はありますか? ありがとう