Matlab 从一行中拆分连续数字并存储在相应的动态变量中
我有一个这样的行向量:Matlab 从一行中拆分连续数字并存储在相应的动态变量中,matlab,Matlab,我有一个这样的行向量:x=[1234567151617] 我想从x中得到两行向量,它们应该分别有连续的数字,如下所示: x1 = [1 2 3 4 5 6 7] 及 可能不是个好办法!但对于单独的阵列,还有另一种方法: k=[find(diff(x)~=1) length(x)]; t1=1; for n = 1:length(k) t2 = k(n); assignin('base', ['x' num2str(n)], x(t1:t2)); t1 = t2 + 1;
x=[1234567151617]代码>
我想从x
中得到两行向量,它们应该分别有连续的数字,如下所示:
x1 = [1 2 3 4 5 6 7]
及
可能不是个好办法!但对于单独的阵列,还有另一种方法:
k=[find(diff(x)~=1) length(x)];
t1=1;
for n = 1:length(k)
t2 = k(n);
assignin('base', ['x' num2str(n)], x(t1:t2));
t1 = t2 + 1;
end
示例的输出:-
>> x1
x1 =
1 2 3 4 5 6 7
>> x2
x2 =
15 16 17
可能不是个好办法!但对于单独的阵列,还有另一种方法:
k=[find(diff(x)~=1) length(x)];
t1=1;
for n = 1:length(k)
t2 = k(n);
assignin('base', ['x' num2str(n)], x(t1:t2));
t1 = t2 + 1;
end
示例的输出:-
>> x1
x1 =
1 2 3 4 5 6 7
>> x2
x2 =
15 16 17
下面是一个解决方案(使用稍微复杂一点的示例):
以及生成的单元阵列:
>> res{1}
1 2 3 4 5 6 7
>> res{2}
15 16 17
>> res{3}
20 21 22 23 24 25
>> res{4}
33
>> res{5}
36 37 38 39 40
下面是一个解决方案(使用稍微复杂一点的示例):
以及生成的单元阵列:
>> res{1}
1 2 3 4 5 6 7
>> res{2}
15 16 17
>> res{3}
20 21 22 23 24 25
>> res{4}
33
>> res{5}
36 37 38 39 40
查找相邻元素之间差异为>1
的索引(使用Find
和diff
)
使用索引之间的差异创建一个向量(使用索引向量中的第一个元素,并添加其他元素之间的差异)
使用拆分向量时使用该向量
像这样:
idx = find([diff(x)>1, 1])
did = [idx(1), diff(idx)]
mat2cell(x,1,did)
查找相邻元素之间差异为>1
的索引(使用Find
和diff
)
使用索引之间的差异创建一个向量(使用索引向量中的第一个元素,并添加其他元素之间的差异)
使用拆分向量时使用该向量
像这样:
idx = find([diff(x)>1, 1])
did = [idx(1), diff(idx)]
mat2cell(x,1,did)
我想让matlab自动完成。Matlab应该:1)识别有两个连续的数字序列2)它应该生成两个变量并存储它们seperately@MuhammadAkmal修好了!我想让matlab自动完成。Matlab应该:1)识别有两个连续的数字序列2)它应该生成两个变量并存储它们seperately@MuhammadAkmal修好了!这是一个重复的问题:这是一个重复的问题: