How to return variables from table?

조회 수: 3 (최근 30일)
Paulius Vaikasas
Paulius Vaikasas 2015년 7월 14일
댓글: Steven Lord 2015년 8월 11일
Hello, this question might seem little bit sily. Here is the thing I have table with data (5 columns), I want to return not only rows in which logical funcionts says 1 but and precending and next rows. Could someone tell me how to do that, thanks.

채택된 답변

the cyclist
the cyclist 2015년 7월 14일
You could do something like this:
(1) Identify the rows that match.
idx1 = find(ismember(tableName.variableName,[1 2 3])); % Apply your logic here.
(2) Get the neighboring rows
idx2 = unique([idx1; idx1-1; idx1+1])
(3) That step might get you row number zero, and a row beyond the size of the table, so trim those
idx2 = max(1,idx2);
idx2 = min(size(tableName,1),idx2);
idx2 = unique(idx2); % Might have double-counted the first and last row, so get rid of those. (Could do this better)
  댓글 수: 2
Paulius Vaikasas
Paulius Vaikasas 2015년 8월 11일
편집: Paulius Vaikasas 2015년 8월 11일
Thank you!
Steven Lord
Steven Lord 2015년 8월 11일
Don't FIND. OR.
x = randperm(20);
y = x > 15;
before = [false, y(1:end-1)]; % No element before the first
after = [y(2:end) false]; % No element after the last
[x; y | before | after]
Elements of x that are greater than 15 or that are immediately before or after an element greater than 15 will have a 1 in the corresponding element of y. You can replace the definition of y with something else:
y = ismember(x, [3 18 7]);
If your x is a column vector, you would need to tweak this slightly to make before and after columns not rows.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by