0

マトリックスに文字列の列があります

X = ['apple1 (15%)'; 'apple2 (15%)'; 'apple3 (15%)'; 'orange1 (15%)'; 'orange2 (15%)'; 'orange3 (15%)' ]

X の内容を再定義するには、行列の別の列を作成する必要があります。

たとえば、MATLAB で 'apple' を 1 として、'orange' を 2 として再定義するようにします。したがって、最終的には次のようになります。

[1; 1; 1; 2; 2; 2]

ただし、文字列の列を読み取ると、MATLAB は文字列を読み取ることができませんでした。

theMatrix = xlsread(myFile.xls);

for i = numTotalTrials;
 X = theMatrix(i,2)

> X = Nan

さらに、strfind列を再定義するために使用しています。

t = strfind(X,'a');
if t == 1
    newColumn = 1
else
    newColumn = 2
end

MATLAB はこのように動作しますか? ありがとう!

4

2 に答える 2

1

正規表現を使用した別のソリューション:

%# note the use of cell-arrays
X = {'apple1 (15%)'; 'apple2 (15%)'; 'apple3 (15%)'; 
     'orange1 (15%)'; 'orange2 (15%)'; 'orange3 (15%)'};

%# match either apples or oranges
m = regexp(X, '^(apple|orange)', 'match', 'once');

%# which one was found
[~,loc] = ismember(m, {'apple','orange'})

結果:

>> loc
loc =
         1
         1
         1
         2
         2
         2
于 2012-08-01T18:21:13.437 に答える
0

これがあなたが探しているものであるかどうかはわかりませんが、

X = ['apple1 (15%)'; 'apple2 (15%)'; 'apple3 (15%)'; 
     'orange1 (15%)'; 'orange2 (15%)'; 'orange3 (15%)'];

出力ベクトルを定義resultし、入力をループして、次のようなものを使用して目的の文字列をstrfind探します

result = zeros(size(X, 1), 1);
for row = 1 : size(X, 1)
    if ~isempty(strfind(X(row,:), 'apple'))
        result(row) = 1;
    elseif ~isempty(strfind(X(row,:), 'orange'))
        result(row) = 2;
    end
end

これは戻ります

result = [1; 1; 1; 2; 2; 2];
于 2012-08-01T18:13:29.137 に答える