我有这样的数据类型单元格:
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
,因为当我使用==
时,它不起作用。
答案 0 :(得分: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
为什么会这样?第一个参数是要放入结构字段的数据,在我们的例子中是“百分比”列。第二个参数给出了相应的字段名称,在我们的例子中是“颜色”列。因此,在
Z
中,字段red
获取值40
,green
获取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%之间会发生什么......)