2014-07-21 38 views
0

我正在使用matlab。我有一个目前返回5个数组的函数,但是我想将数组连接到一个单一的矩阵中,或者只是一个单元格数组,每个数组的标题都是当前函数的输出?使用数字和字符串创建矩阵/数组

例如,给输出,如:

low_sec lowmid_sec 
1    7 
2    6  
35    5 
5    43 

任何想法?

function [low_sec ,lowmid_sec , middle_sec , upmid_sec , upper_sec]=  sepfunc(intensdata)lengthofdata=length(intensdata); 
count1=0; 
count_2=0; 
count_3=0; 
count_4=0; 
count_5=0; 

for i= 1:lengthofdata %loop to seperate count number of data in 5 groups 
    if (intensdata(i,1)<0.05) 
     count1=count1+1;  
    elseif (intensdata(i,1)>=0.05 && intensdata(i,1)<0.1) 
     count_2=count_2+1; 
    elseif (0.1<=intensdata(i,1) && intensdata(i,1)<0.15) 
     count_3=count_3+1; 
    elseif (0.15<=intensdata(i,1) && intensdata(i,1)<0.2) 
     count_4=count_4+1; 
    elseif (intensdata(i,1)>=0.2) 
     count_5=count_5+1; 
    end 
end 
    disp(count1); 
    disp(count_2); 
    disp(count_3); 
    disp(count_4); 
    disp(count_5); 
    j=1; 
    k=1; 
    m=1; 
    n=1; 
    x=1; 
    low_sec=[count1]; 
    lowmid_sec=[count_2]; 
    middle_sec=[count_3]; 
    upmid_sec=[count_4]; 
    upper_sec=[count_5]; 


for i= 1:lengthofdata %to seperate original data into 5 different sub-groups. 
    if (intensdata(i,1)<0.05) 
     low_sec(j,1)=intensdata(i,1); 
     j=j+1 ; 
    elseif(0.05<=intensdata(i,1) && intensdata(i,1)<0.1)  
     lowmid_sec(k,1)=intensdata(i,1); 
     k=k+1; 
    elseif(0.1<=intensdata(i,1) && intensdata(i,1)<0.15)  
     middle_sec(m,1)=intensdata(i,1); 
     m=m+1; 
    elseif(0.15<=intensdata(i,1) && intensdata(i,1)<0.2)  
     upmid_sec(n,1)=intensdata(i,1); 
     n=n+1; 
    elseif(intensdata(i,1)>=0.2)  
     upper_sec(x,1)=intensdata(i,1); 
     x=x+1; 
    end 

end 
+0

为什么不输出'struct'? – Dan

+0

2个星期前我刚开始使用matlab,所以我真的不知道它做了什么。一般来说对编程来说真的很新鲜 – khoshnaw

+0

@丹我不知道如何使用它,有没有别的办法? – khoshnaw

回答

3

你有几个选择,如你所说的使用单元格数组,或者使用新的表格结构或者最简单的方法是创建一个结构体。

要做到这一点,你需要的是添加以下你的函数的末尾:

sec.low = low_sec; 
sec.lowmid = lowmid_sec; 
sec.middle = middle_sec; 
sec.upmid = upmid_sec; 
sec.upper = upper_sec; 

,然后改变你的第一行是:

function sec = sepfunc(intensdata) 
+0

单元阵列方法 - sec = {low_sec,lowmid_sec,middle_sec,upmid_sec,upper_sec};' – Yvon

+0

非常感谢你@丹,真的很感激。 – khoshnaw