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'

然后我像这样混合在一个单元格中:

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带有符号。将是一个包含字符串列和 2 个数值列的元胞数组:%Y

>> 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

为什么会这样?第一个参数是要放入结构字段的数据,在我们的例子中是“百分比”列。第二个参数给出了相应的字段名称,在我们的例子中是“颜色”列。所以在Z字段中red获取值40green获取40blue获取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 回答