所以我一直试图解决这个问题几个小时,我无法弄清楚如何获得我想要的格式。
我有一个数组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的数组?
答案 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 ) = [];
答案 1 :(得分: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.