2015-11-02 2 views
0

Я пытаюсь классифицировать годы, основанные на некоторых условиях. Если в течение какого-либо года количество осадков меньше определенного количества, оно будет указывать как сухой год. Я пробовал следующее, но это дает мне ошибку «В задании A (I) = B количество элементов в B и I должно быть одинаковым».Как написать строку вместо номера в MATLAB?

Код

Year_Category = zeros(ny,1); 
for i = 1:ny; 
    if (xy(i)< Lower_Limit) 
     Year_Category(i) = 'Dry'; 
    elseif (xy(i)> Upper_Limit) 
     Year_Category(i) = 'Wet'; 
    else 
     Year_Category(i) = 'Average'; 
    end 
end 

Любая помощь будет оценена.

С наилучшими пожеланиями

ответ

2

Вы пытаетесь присвоить символы числового массива. Вот почему вы получаете несоответствие измерений. Каждый символ - это один слот, и вы не можете сделать этого в этом случае. Вместо этого используйте клеточные массивы:

Year_Category = cell(ny,1); %// Change 
for i = 1:ny; 
    if (xy(i)< Lower_Limit) 
     Year_Category{i} = 'Dry'; %// Change 
    elseif (xy(i)> Upper_Limit) 
     Year_Category{i} = 'Wet'; %// Change 
    else 
     Year_Category{i} = 'Average'; %// Change 
    end 
end 
+0

Thank you rayryeng; он работал, но он дал мне ответ как ячейку. Но я хотел бы получить результаты как массив (double). Когда я попытался преобразовать ячейку в double (Year_Category_M = str2double (Year_Category);), она отображает все значения как NaN. – shawpnik

+0

Это невозможно. Вы пытаетесь присвоить символы массиву 'double'. Вот почему я предложил ячейку вместо этого. Это может работать, если вместо «Сухих», «Влажных» и «Средних» вместо фактических чисел ... например, 0, 1 или 2. Вы не можете сделать это с помощью символов. – rayryeng

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