2016-03-03 153 views
0

所以我一直試圖弄清楚這幾個小時,我無法弄清楚如何獲得我想要的格式。將兩個陣列合併爲一個單元格

我有一個數組x和y:

x=[39.8; 36.8; 36.6; 37.7] 
y=[-56.7; -57.6; -60.2; -59.4] 

我想打開這兩個成單個數組z,但在這樣的單細胞:

Single Column 
------------- 
39.8, -56.7 

36.8, -57.6 

36.6, -60.2 

37.7, -59.4 

另外我有一個24x1雙。它有許多發生,但主要由零填充。我想把它放在下一欄,但我知道它需要和上面的繩子一樣長。有沒有辦法用數字> 0創建一個數組?

回答

1

這是怎麼回事?

x=[39.8; 36.8; 36.6; 37.7]; y=[-56.7; -57.6; -60.2; -59.4]; 
X=num2cell(x); 
Y=num2cell(y); 
Z=strcat(X,Y); 

whos Z: 

Name  Size   Bytes Class Attributes 

Z   4x1    304 cell  

Z{1} 

ans = 

39.8000 -56.7000 

得到陣列不爲零,這樣做:

ARRAY(ARRAY == 0) = []; 
+0

是完美的作品!非常感謝你 – Constantine

+0

在這裏巧妙地使用strcat! – Suever

+0

@Suever謝謝 – GameOfThrows

0

這裏的解決方案,更好地擴展到多個陣列。在我的機器上,它也更快。

x = [39.8; 36.8; 36.6; 37.7]; 
y = [-56.7; -57.6; -60.2; -59.4]; 
tic 
for i = 1:1000 
    X = num2cell(x); 
    Y = num2cell(y); 
    Z1 = strcat(X,Y); 
end 
toc 
tic 
for i = 1:1000 
    Z2 = arrayfun(@horzcat, x, y, 'un', 0); 
end 
toc 
assert(isequaln(Z1, Z2)); 

時序:

Elapsed time is 0.106900 seconds. 
Elapsed time is 0.017918 seconds.