1

次のようなデータ型のセルがあります。

A = 'red' 'red' green' 'red'
B = 'red' 'blue' 'red' 'green'
C = 'green' 'red' green' 'blue'
D = 'blue' 'red' 'green' 'red'
E = 'green' 'blue' 'red' 'green'

次に、次のように1つのセルに混ぜます。

X = {A{:},B{:},C{:},D{:},E{:}}

そして、私は次のように表にします:

Y = tabulate(X)

だから私は結果を得ることができます:

'red'  '9'   '45'
'green' '7'  '35'
'blue' '4'  '20'

データを次のように分類したい場合:

if 'red' > 90% and 'green' <10% the result is "good"
if 'red' between 70 and 90 % and the result is "ok"
if 'red < 60% the result is "bad"

if使用すると機能しないため、セルでは使用でき==ません。

4

1 に答える 1

0

これを試してみると(そして、手動で入力A{:},B{:},...するA,B,...場合は事前に変更してください。おそらくあなたの場合は必要ありません。あなたの場合[A B C D E ...]も同様に機能するはずです...)、次のXような配列を取得します。

次のようになります。

>> X={'red' 'red' 'green' 'blue' 'green'}

X = 

    'red'    'red'    'green'    'blue'    'green'

>> 

その場合、Y数値データは数値形式で含まれており、%どこかに記号はありません。Yは、文字列列と 2 つの数値列を含むセル配列になります。

>> Y=tabulate(X)

Y = 

    'red'      [2]    [40]
    'green'    [2]    [40]
    'blue'     [1]    [20]

これで、物をまとめることができます。例として:

Z = cell2struct(Y(:,3), Y(:,1))

ここでは、セル配列の 2 列目をデータとして、1 列目を作成する構造体のフィールド名として使用します。その結果、

>> Z=cell2struct(Y(:,3), Y(:,1))

Z = 

      red: 40
    green: 40
     blue: 20

なぜそうなるのですか?1 番目の引数は、構造体のフィールドに入れるデータです。これは、この例では「パーセンテージ」列です。2 番目の引数は、対応するフィールド名 (この場合は "color" 列) を指定します。したがってZ、フィールドredで値40green取得40し、取得し、blue取得します20。)

それから私はすることができます

if Z.red > 90 && Z.green < 10 % why this 2nd condition? The 1st should be enough...
    result = 'good'
elseif Z.red > 70
    result = 'ok'
else
    result = 'bad'
end

または同様のもの (60 ~ 70% の間で何が起こるかを指定していませんでした...)

于 2012-06-21T08:27:07.993 に答える