How to return variables from table?
1 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
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 个评论
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 Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!