3

これが本当に正しいかどうか、またはこれがmatlabの問題である可能性があるかどうかを理解したいと思います。

次の方法で文字列ベクトル/配列を作成します。

>>a=['1','2';'3','4']

それは戻ります:

 a =
    12
    34

次に、コンテンツを文字列から数値に変換し、これに数値を掛けます。

>>6*str2num(a)

結果は次のようになります。

 a =
    72
    204

カンマ区切りの要素(文字列)が連結され、区切り処理されない理由がわかりません。文字列の代わりに数字を使用すると、それらは分離されて処理されます。次に、次のようになります。

>> a=[1,2;3,4]

a =
     1     2
     3     4

>> 6*a

ans =
     6    12
    18    24

私は同じ結果を期待します。何か案は ?

ありがとう

4

2 に答える 2

4

MATLABで文字列処理がどのように行われるかについて読んだことがありますか?

基本的に、複数の文字列は(文字列の)列ベクトルとしてのみ保存できます。行ベクトルとして格納しようとすると、それらは連結されます。これが、文字列'1''2'が連結されている'3'理由'4'です。また、これは、結果のすべての文字列が同じ長さである場合にのみ可能であることに注意してください。

何をしようとしているのかわかりませんが、文字列を行列として(つまり、複数の文字列を1行に)格納する場合は、たとえば次のようにセル配列に格納することを検討してください。

>> A = {'1', '2'; '3', '4'}

A = 
    '1'    '2'
    '3'    '4'

>> cellfun(@str2num, A)

ans =
    1     2
    3     4
于 2013-01-09T10:09:03.650 に答える
1

@EitanTが示唆するようにセル配列を使用することが、おそらくあなたにとって最良の解決策になると思います。

ただし、手動でスペースを挿入し、文字数を並べることで、文字列(または文字)を処理することができます。

例えば

>> a=['1 2';'3 4']

を生成します

a =

1 2
3 4

と使用

>> 6*str2num(a)

を生成します

ans =

     6    12
    18    24

を使用して行列と文字列を変換する

b=[1,2;3,10000];
num2str(b)

スペースが自動的に挿入され、文字が適切に並べられます。これにより、

ans =

1      2
3  10000
于 2013-01-09T10:27:51.677 に答える