如何将矢量分成两个相等的向量?

时间:2014-11-10 09:59:34

标签: matlab

我需要在MATLAB中将矢量分成两个相等的矢量。请问你能帮帮我吗? 例如,如果我有向量x=[1 3 7 9],我需要将其分为y=[1 3]z=[7 9]

3 个答案:

答案 0 :(得分:5)

function [v1, v2] = DivideVectorIntoTwo (v)
   midindex =  floor (length (v) / 2) ;
   v1 = v (1:midindex) ;
   v2  = v (midindex+1 :end) ;
end

答案 1 :(得分:2)

我建议查看一些基本的matlab操作。

如果你采用向量x

x=1:1000;

您可以轻松地将他分成不同的新阵列。如果您想要使用相同长度的数组,则应使用numel()size()来获取大小,然后取一半。

length_of_x=numel(x);
new_length=ceil(length_of_x/2);

我使用ceil()(四舍五入)以防你的x长度不是:2,4,6,8等等但是1,3,5 ...然后你可以使用{{1}获得前半部分,1:new_length获得后半部分。

new_length+1:end

将是您的任务的结果。

答案 2 :(得分:0)

end是MATLAB中一个聪明的命令,可以在很多情况下用作快捷方式,例如当你只想要一个向量的前半部分时,如下所示:

v(1:end/2);

您可以使用匿名函数句柄中的deal将矢量拆分为两个:

split_vec = @(x) deal(x(1:floor(end/2)), x(floor(end/2)+1:end));

[a, b] = split_vec(1:10)
a =
     1     2     3     4     5
b =
     6     7     8     9    10