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