2014-07-21 41 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