2016-03-03 73 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.