2015-11-02 33 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

谢谢rayryeng;它工作,但它给我作为一个单元格的答案。但我想将结果作为数组(双精度)。当我试图将单元格转换为double(Year_Category_M = str2double(Year_Category);)时,它将所有值显示为NaN。 – shawpnik

+0

这是不可能的。您正在尝试将字符分配给“双”数组。这就是为什么我建议一个单元。如果将'Dry','Wet'和'Average'更改为实际数字,则可以工作,如0,1或2.您不能使用字符来完成此操作。 – rayryeng

相关问题