2012-06-21 2 views
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 в клетке, потому что, когда я использую == он не работает.

ответ

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

Здесь я беру 2RD столбец массива ячеек в виде данных и 1-ый в качестве имен полей для чтобы быть созданной структуры. Так что приведет к

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

Z = 

     red: 40 
    green: 40 
    blue: 20 

Почему это так? Первый аргумент - это данные, которые должны быть помещены в поля структуры, которая в нашем случае является столбцом «процент». Второй аргумент дает соответствующие имена полей, в нашем случае - столбец «color». Таким образом, в Z поле red получает значение 40, green40 получает и получает blue20.)

Тогда я могу сделать

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 процентов ...)

+0

, пожалуйста, объясните мне более подробно об обращении от ячейки к структуре ... спасибо @glglgl Бог благословляет – saut

+0

'help cell2struct' не помогло? Я вернусь через час или около того, тогда я мог бы добавить некоторые объяснения. – glglgl

+0

добавлено короткое объяснение. – glglgl

Смежные вопросы