matlab将已知矩阵作为一个整体在大矩阵中进行比较,相同的子矩阵组成一个新矩阵,不同的子矩阵组成另一个矩阵
时间: 2023-12-02 18:04:04 浏览: 35
可以使用matlab中的`ismember`函数来完成这个任务。具体步骤如下:
1. 定义已知矩阵A和大矩阵B。
2. 将矩阵A的所有子矩阵存储在一个单元格数组中,可以使用`mat2cell`函数实现。
3. 使用`cellfun`函数和`ismember`函数来比较大矩阵B中的所有子矩阵是否与A中的子矩阵相同。这将生成一个逻辑数组。
4. 根据逻辑数组将大矩阵B分成两个矩阵,一个包含相同的子矩阵,一个包含不同的子矩阵。
下面是一个示例代码:
```matlab
% 定义已知矩阵A和大矩阵B
A = [1 2; 3 4];
B = [1 2 3 4; 5 6 7 8; 9 10 11 12; 1 2 3 4];
% 将矩阵A的所有子矩阵存储在一个单元格数组中
subA = mat2cell(A, [1 1], [1 1]);
% 使用cellfun函数和ismember函数来比较大矩阵B中的所有子矩阵是否与A中的子矩阵相同
logicArr = cellfun(@(x) ismember(x, subA), mat2cell(B, [2 2], [2 2]), 'UniformOutput', false);
% 根据逻辑数组将大矩阵B分成两个矩阵,一个包含相同的子矩阵,一个包含不同的子矩阵
sameSubMat = cell2mat(cellfun(@(x) B(x), find(cell2mat(logicArr)), 'UniformOutput', false));
diffSubMat = cell2mat(cellfun(@(x) B(x), find(~cell2mat(logicArr)), 'UniformOutput', false));
```
在这个示例中,`sameSubMat`将包含与已知矩阵A中的子矩阵相同的所有子矩阵,而`diffSubMat`将包含所有与A中的子矩阵不同的子矩阵。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)