2016-03-03 3 views
0

Итак, я пытался понять это в течение нескольких часов, и я не могу понять, как получить формат, который я хочу.Слияние двух массивов в одну ячейку

У меня есть массив х и у:

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

Я хочу, чтобы превратить эти два в одном массиве г, но в одной клетке, как это:

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. 
Смежные вопросы