What is an alternative FIND function that find indices and values of both ZERO and NONZERO elements in Matlab ?

25 次查看(过去 30 天)
Hello,
I am using Matlab and I would like to know how to find indices/values of both zero and nonzero elements of a given vector ? Can anyone help ?
For example:
X = [1 0 2; 0 1 1; 0 0 4];
How can I find indices of the elements in the first raw i.e. '1'; '0'; '2' ?
Thank you!
  3 个评论
Gobert
Gobert 2016-2-3
编辑:Gobert 2016-2-3
@Walter, @Kirby, Thanks for your replies. See this:
E = [2, 0, 5, 9];
k = 1: numel(E);
[i,j] = find(E(k))
The output is:
i =
1 1 1
j =
1 3 4
As can be seen, the (i, j) indices for 0 element in E are not provided. How can I also obtain the (i,j) indices for any 0 valued element that can be included (together with other nonzero valued elements) in E ? That's what I want to know.
Thanks again!

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2016-2-3
编辑:Stephen23 2016-2-3
>> E = [2, 0, 5, 9];
>> [R,C] = ind2sub(size(E),1:numel(E))
R =
1 1 1 1
C =
1 2 3 4
Or using your original example:
>> X = [1 0 2; 0 1 1; 0 0 4];
>> [R,C] = ind2sub(size(X),1:numel(X))
R =
1 2 3 1 2 3 1 2 3
C =
1 1 1 2 2 2 3 3 3
or just the first row (as your question request) is very simple:
>> C = 1:size(X,2)
C =
1 2 3
>> R = ones(size(C))
R =
1 1 1

更多回答(1 个)

Image Analyst
Image Analyst 2016-2-3
Try this:
X = [1 0 2; 0 1 1; 0 0 4]
[zeroRows, zeroColumns] = find(X == 0)
[nonZeroRows, nonZeroColumns] = find(X ~= 0)

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by