index info for CAT

1 次查看(过去 30 天)
I am concatenating vectors x1,x2,x3 using y=cat(2,x1,x2,x3). Each one of these vectors have different lengths. I need to keep track index information for each one of them. How can I do this without loops.
x1=[1 1 0 1]; x2=[1 0]; x3=[1 1 1];
y=cat(2,x1,x2,x3);
= [1 1 0 1 1 0 1 1 1]
index = [1 4;5 6;7 9]

采纳的回答

Azzi Abdelmalek
Azzi Abdelmalek 2014-8-11
编辑:Azzi Abdelmalek 2014-8-11
index=reshape(cumsum([1 numel(x1)-1 1 numel(x2)-1 1 numel(x3)-1]),2,[])'
  1 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2014-8-11
Instead of using 3 variables x1,x2 and x3 you can use a single variable
x={[1 1 0 1];[1 0];[1 1 1]} % x is a cell array
you can get your three variables
x{1}
x{2}
x{3}
% Now you can get y
y=cell2mat(x')
out=reshape(cumsum([1 numel(x1)-1 1 numel(x2)-1 1 numel(x3)-1]),2,[])'

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by