2011-06-27 30 views
4

私はそのような列の数は、行ごとに異なるようにエラーを返し、このもちろん異なるサイズの文字列をMATLAB配列に格納していますか?

userinput=['AJ48 NOT'; 'AH43 MANA'; 'AS33 NEWEF'];

ように、異なるサイズの一連の文字列を格納できるようにします。私は、これが機能するために必要なのは、第1行と第2行に十分なスペースがあることを認識しています。しかし、私は、ユーザーがこれらのスペースを自分で追加することなく、これを配列に入れることができる必要があります。私にこれを可能にするコマンドがありますか?可能であれば、この問題が数字ではなく、なぜ発生しないのかも知りたいと思います。

a=[1; 243; 23524];

答えて

8

あなたは、標準のMATLAB配列でこれを行うことはできません。文字列は実際にはMatlabの文字のベクトルです。そして、異なる長さの行を持つ行列を持つことはできません。

ただし、cell arrayを使用することができます。

userinput={'AJ48 NOT'; 'AH43 MANA'; 'AS33 NEWEF'}; 

disp(userinput{1}); 

は、セル配列は、通常の配列と同じように動作しない多くの状況があることに注意してください。

+0

私の意見では、MATLABセルアレイを「正常ではない」ものとして教える最適なアプローチではありません。 MATLAB内のすべての配列は、double、structまたはcellのいずれの場合でも "通常"です。そして、すべての配列は同じように動作します!それ以外にも、セル配列にはいくつかのショートカット構文が追加されています。 – Mikhail

+0

@Mikhail:セル配列は、「通常の」配列と大して同じではありません。それらは、状況によってはより遅く、柔軟性が低く、他の状況ではより柔軟性があります。 –

+0

ダブル、構造体またはセル配列の最適なユースケースは異なりますが、要素のアクセス、変形、削除、追加など、配列操作は同じです。 – Mikhail

1

質問の最後の部分に答えるだけです。単に文字列が可変長であるかもしれないが、(Matlabでは)数値は固定長であるからです。効率的なルックアップが必要なためなど、固定サイズのエンティティのみを保持できるようにするための配列の主なアイデアの1つです。詳細はhereを参照してください。

関連する問題