若有2个txt文件,每个txt文件有3列,第一列为精度,第二列为纬度,第三列为沉降速率,该怎么筛选相同经纬度的点,并分别保存两个文件中对应的沉降速率为两个文件,matlab编写
时间: 2023-12-04 08:05:05 浏览: 63
可以使用Matlab的文件读写和矩阵操作函数实现该功能。具体步骤如下:
1.使用`importdata`函数读取两个txt文件,并将其转换为矩阵格式。
```
data1 = importdata('file1.txt');
data2 = importdata('file2.txt');
```
2.从每个文件的矩阵中提取经度和纬度信息,组成一个新的矩阵。
```
pos1 = data1(:,1:2);
pos2 = data2(:,1:2);
```
3.使用`ismember`函数找到两个矩阵中相同的经纬度点。
```
[common_pos, idx1, idx2] = intersect(pos1, pos2, 'rows');
```
这里使用了`intersect`函数找到两个矩阵中的交集,并返回了其中的公共点坐标和它们在原始矩阵中的索引。
4.根据索引从原始矩阵中提取相应的沉降速率信息,并将其保存到新的txt文件中。
```
data1_common = data1(idx1,:);
data2_common = data2(idx2,:);
save('file1_common.txt', 'data1_common', '-ascii');
save('file2_common.txt', 'data2_common', '-ascii');
```
这里使用了`idx1`和`idx2`来提取原始矩阵中对应的行,并使用`save`函数将结果保存到新的txt文件中。
完整的代码如下:
```
data1 = importdata('file1.txt');
data2 = importdata('file2.txt');
pos1 = data1(:,1:2);
pos2 = data2(:,1:2);
[common_pos, idx1, idx2] = intersect(pos1, pos2, 'rows');
data1_common = data1(idx1,:);
data2_common = data2(idx2,:);
save('file1_common.txt', 'data1_common', '-ascii');
save('file2_common.txt', 'data2_common', '-ascii');
```
阅读全文