matlab2016b完成以下需求:矩阵A为1行n列,存储字符串,有一个字符串str,在A中查找所有字符串中子串包含str的行号,并将包含str的行放到新的矩阵A1中
时间: 2024-03-27 17:41:34 浏览: 142
可以按如下步骤实现:
1. 假设矩阵A已经存在且存储了字符串,字符串str也已知,可以使用Matlab自带函数`strfind`判断每一行中是否包含字符串str,将结果存储到逻辑型矩阵L中:
```
L = false(size(A)); % 初始化为全假
for i = 1:size(A, 1)
if ~isempty(strfind(A(i,:), str))
L(i) = true;
end
end
```
2. 逻辑型矩阵L中,L(i)表示第i行是否包含子串包含字符串str,可以使用`find`函数找到所有为真的下标,即包含子串包含字符串str的行号:
```
idx = find(L);
```
3. 使用下标idx将包含子串包含字符串str的行提取出来,存储到新的矩阵A1中:
```
A1 = A(idx, :);
```
完整代码如下:
```
% 示例矩阵A
A = ["hello world", "matlab", "test", "hello matlab", "world"];
% 查找字符串
str = "at";
% 判断每一行是否包含子串
L = false(size(A)); % 初始化为全假
for i = 1:size(A, 1)
if ~isempty(strfind(A(i,:), str))
L(i) = true;
end
end
% 找到包含子串的行号
idx = find(L);
% 提取包含子串的行
A1 = A(idx, :);
```
注意,这个方法是通过判断每一行中是否包含子串来实现的,如果要在整个字符串中查找子串,可以使用Matlab自带的`contains`函数。
阅读全文
相关推荐
















