matlab返回数组的非零
时间: 2023-08-13 09:07:36 浏览: 51
在 MATLAB 中,可以使用非零元素索引函数`find()`来返回一个数组中非零元素的索引,例如:
```matlab
A = [0 1 2; 3 0 0; 4 5 0];
idx = find(A); % 返回 A 中非零元素的索引
```
这里 `idx` 将会是一个包含非零元素索引的向量,例如 `[2;3;4;7;8]`。如果你只想返回非零元素的个数,可以使用`nnz()`函数,例如:
```matlab
count = nnz(A); % 返回 A 中非零元素的个数
```
这里 `count` 将会是 5。
相关问题
matlab过滤数组中非零
在Matlab中,去掉数组中所有的非零项可以使用“find”函数。该函数返回矩阵中非零元素的索引,通过将这些索引传递给数组,就可以得到一个只包含零的新数组。
例如,对于一个包含非零元素的数组a,可以使用以下代码过滤出只有零元素的新数组b:
idx = find(a);
b = zeros(size(a));
b(idx) = 1;
该代码中,首先使用“find”函数获取非零元素的索引,并将其存储在“idx”中。接着,创建一个与a相同大小的全零新数组“b”。最后,将在“idx”中找到的非零元素的索引对应的元素置为1,就可以得到只包含零的新数组“b”。
值得注意的是,如果原数组a中只有少量非零元素,可以使用“logical”类型来创建新数组b,这样可以减少内存的使用。
例如,对于一个包含非零元素的数组a,可以使用以下代码过滤出只有零元素的新数组b:
b = zeros(size(a));
b(a~=0) = 1;
该代码中,使用“a~=0”来创建一个“logical”类型的数组,其中非零元素的位置为true,其余位置为false。将这个逻辑数组与一个全零的数组相乘,就可以得到一个只包含零的新数组“b”。这种方法不需要额外的内存空间,因此在处理大型数组时可以提高代码的效率。
matlab将数组除去0
可以使用逻辑索引和元素索引来实现将数组除去0。
逻辑索引:
```matlab
A = [1 2 0 3 0 4];
A(A~=0)
```
输出结果:
```
1 2 3 4
```
元素索引:
```matlab
A = [1 2 0 3 0 4];
A(A~=0) = A(A~=0)./A(A~=0);
```
输出结果:
```
1 1 NaN 1 NaN 1
```
其中,`A(A~=0)` 返回 A 数组中所有非零元素的值,`A(A~=0)./A(A~=0)` 将非零元素的值除以它自己,以便于去除 0。你也可以将其替换为一个非零数,例如 1。