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修好了!这是一个重复的问题:这是一个重复的问题: