0

、、などの3つの文字列がある場合、'Y20194'これらを、、、、などのベクトルに分割する'219Y42''12345'はどうすればよいですか?を使用していますが、数値に変換する前に、ステップ(最初に文字列内の個々の数値を区切る)が欠落していると思います。また、文字が正しく読み取られておらず、使用すると[]が表示されます。[Y 2 0 1 9 4][1 2 3 4 5][2 1 9 Y 4 2]str2numstr2num

上記のような文字列の行を含むファイルがあります。以前fgetlはファイルの各行を文字列に読み込んでいましたが、それ以上に行き詰まっています。

4

4 に答える 4

2

数値ベクトルに文字と数字の両方を含めることはできません。

次のことができます。

s = 'Y20194';
c = cellstr(s')';
v = str2double(c);

セル配列には、個別のセルに分離されたcすべての文字が含まれます。最初sに文字列を転置する必要があることに注意してください。s

ベクトルvでは、最初の値は文字であるためNaNになります。

于 2013-03-13T19:29:07.563 に答える
1

チャーは保持されます。数字はダブルタイプに変換されます。

入力がファイルの読み取りからのものでない場合、コードは次のようになります。result1は、必要な配列を含むセルです。

ここに画像の説明を入力してください

入力が1つのファイルの場合、このファイルを例として取り上げます。demo1.txt、内容は次のとおりです。 ここに画像の説明を入力してください

次のように、各行を必要なものに変換するためのコード。コードは各行を必要なものに変換してから表示します。

ここに画像の説明を入力してください

'Y'または他のアルファベットをゼロに置き換えたい場合、コードは次のようになります

ここに画像の説明を入力してください

于 2013-03-13T20:19:12.660 に答える
0

たぶんSTRSPLITが役立つでしょう。

ts = strsplit('Y20194');
%       ts <- {'Y', '2', '0', '1', '9', '4'}

これで、str2numを使用して、ベクトル内の各要素を個別に数値に変換してみることができます。

N = size(ts, 1);
str = cell(1, N);
for i=1:N;
    str{i} = str2num(ts{i, 1});
end

ただし、文字列内の一部の文字は数字ではないため(たとえば、「Y」)、これが完全に機能するとは思われません。

(しばらく経ちましたが、一部のインデックスが入れ替わる場合があります。)

于 2013-03-13T19:11:15.140 に答える
0

を非常に単純なソリューションに変更したい場合は、次の方法を利用できYます。0

str = 'Y20194';
str(str==Y)='0';
str - '0'
于 2013-03-27T16:54:54.567 に答える