Build an array with different column lengths

Have one large data set (3333x1 double) and am trying to section out rows based on certain index values. If I have say 10 index pairs (beginning and end row) that I want to section out,each with different lengths how can I build one new nx10 matrix?
I keep getting subscripted assignment mismatches and similar errors when I try things like:
for i = 1:length(indices)
newData(:,i) = olddata(indexstart(i):indexstop(i),:);
end

답변 (1개)

Matt J
Matt J 2016년 8월 15일
편집: Matt J 2016년 8월 15일

1 개 추천

Usually you would store such a result as a cell array,
newData=cell(1, length(indices));
for i = 1:length(indices)
newData{i} = olddata(indexstart(i):indexstop(i));
end
If it needs to be a numeric array, you need to decide what will go in the missing spots.

댓글 수: 4

SO this will give me one cell array with multiple columns? or multiple cells each with a column in it? How would I achieve the former?
Matt J
Matt J 2016년 8월 15일
편집: Matt J 2016년 8월 15일
SO this will give me one cell array with multiple columns? or multiple cells each with a column in it?
Both. A cell array consists of multiple cells. In this case, the cell array that gets created is 1xlength(indices). In other words, it has N=length(indices) columns.
The content of each of the N cells is a numeric vector from olddata. It will be a numeric column vector if your olddata was also a column vector.
I get a 1x10 array with each cell having one column in it. do I need to nest this newdata into another cell array or something?
Matt J
Matt J 2016년 8월 15일
편집: Matt J 2016년 8월 15일
Your needs, and what you plan to do with this data later, are completely hidden from me. However, I can't imagine many situations where you couldn't use the 1x10 cell array as is.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

질문:

2016년 8월 15일

편집:

2016년 8월 15일

Community Treasure Hunt

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

Start Hunting!

Translated by