matlab2016b完成以下需求:元胞矩阵A为1行n列,存储字符串,有一个字符串str,在A中查找所有字符串中子串str(送变电工程)的行号,并将包含str的行放到新的矩阵A1中
时间: 2024-03-27 19:41:37 浏览: 46
可以使用如下代码实现:
```matlab
% 元胞矩阵A
A = {'送变电工程设计', '电力系统自动化', '输电线路工程', '电气设备检修', '送变电工程施工'};
% 待查找的子串str
str = '送变电工程';
% 初始化新的矩阵A1
A1 = {};
% 遍历元胞矩阵A,查找包含子串str的行
for i = 1:length(A)
if contains(A{i}, str)
A1 = [A1; A(i)];
end
end
% 输出包含子串str的行号
disp(A1);
```
输出结果为:
```
'送变电工程设计'
'送变电工程施工'
```
相关问题
matlab2016b完成以下需求:矩阵A为1行n列,存储字符串,有一个字符串str,在A中查找所有字符串中子串包含str的行号,并将包含str的行放到新的矩阵A1中
可以按如下步骤实现:
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`函数。
matlab2016b完成以下需求:矩阵A为1行n列,存储字符串,有一个字符串str,在A中查找所有包含str的行号,并将包含str的行放到新的矩阵A1中
可以按如下步骤实现:
1. 假设矩阵A已经存在且存储了字符串,字符串str也已知,可以使用Matlab自带函数`strcmp`判断每一行是否包含字符串str,将结果存储到逻辑型矩阵L中:
```
L = strcmp(A, str);
```
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 = "matlab";
% 判断每一行是否包含字符串
L = strcmp(A, str);
% 找到包含字符串的行号
idx = find(L);
% 提取包含字符串的行
A1 = A(idx, :);
```
注意,这个方法只能判断整行是否包含字符串,如果要在字符串中查找子串,可以使用Matlab自带的`strfind`函数。
阅读全文