请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

搜索
查看: 407|回复: 9

[程序设计] matlab读取多个txt文件绘制台风路径

[复制链接] |关注本帖

新浪微博达人勋

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
绘制的是2017年的所有台风路径。想要把27个台风绘制在一张图里。txt文本中只有经度和纬度。27个台风的路径文本名为1~27.txt。绘制一个台风路径的程序如下:data=importdata('D:\matlab\biyesheji\1.txt');
X=data(:,2)/10;
Y=data(:,1)/10;
map=shaperead('D:\matlab\biyesheji\landareas.shp');
lon=[map.X];lat=[map.Y];
plot(lon,lat,'color',[0.7 0.7 0.7]')
hold on;
figure(1)
    x=X;
    y=Y;
for i=1:size(x,1)-1
    plot(x(i:i+1),y(i:i+1),'a')
    scatter(x(i),y(i),30,'o','markeredgecolor','a','markerfacecolor','a');
    hold on;
end
n=size(x,1);
scatter(x(n),y(n),30,'o','markeredgecolor','a','markerfacecolor','a');
hold on
axis equal;
axis([110 190 0 60]);
titlename=('20171号台风MEIFA');
title(titlename,'fontname','宋体','fontsize',15,'fontweight','b')
filename=['D:\matlab\biyesheji',titlename,'.png'];
plot(1,1);
str=get(gca,'xticklabel');
strtxt1=strcat(str,'°E');
set(gca,'xticklabel',strtxt1);
str=get(gca,'yticklabel');
strtxt2=strcat(str,'°N');
set(gca,'yticklabel',strtxt2);
请问怎样修改程序才能读取27个文件,将27个台风路径绘制在一张图里呢?



密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-3-13 16:58:16 | 显示全部楼层 |取消关注该作者的回复
clc;
clear all;
file_name=textread('G:\filename.txt','%s');   %文件名列表
num=size(file_name,1);  
for i_file=1:num;
    s=char(file_name(i_file,1));
    s1=['G:\',s];    %路径+文件名
   …………
…………
end

大致这种,根据你具体过程再作修改
密码修改失败请联系qq:937062711
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2018-3-13 16:07:51 | 显示全部楼层 |取消关注该作者的回复
自顶!!!请各位大神不吝赐教
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2018-3-13 16:11:13 | 显示全部楼层 |取消关注该作者的回复
难道要用死办法一个文件一个文件的打开画吗?
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-3-13 23:40:36 | 显示全部楼层 |取消关注该作者的回复
       我认为,你可以把多个文件数据写到一个文件中;或者读取文件夹中的所有文件,再用循环语句一个一个打开画图,用到一个dir()命令(功能是读取文件夹中的所有文件名,为一个字符串集合)。百度搜索matlab批量处理数据文件的方法
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-3-14 09:28:49 | 显示全部楼层 |取消关注该作者的回复
dic=dir(fullfile(['D:\matlab\biyesheji'],'*.txt'));
for i=1:size(dic,1)
data=importdata(['D:\matlab\biyesheji\', dic(i,1).name);
.........
end

大致就是这么个过程
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2018-3-14 09:49:31 | 显示全部楼层 |取消关注该作者的回复
午后阳光 发表于 2018-3-13 16:58
clc;
clear all;
file_name=textread('G:\filename.txt','%s');   %文件名列表

还是不行啊,出现了问题,说:
错误使用 textread (line 159)
未找到文件。

出错 Untitled (line 6)
file_name=textread('D:\matlab\biyesheji\*.txt','%s');   %文件名列表
都不到文件?
是我写的程序有问题吗?下面是我改写的程序:
file_name=textread('D:\matlab\biyesheji\*.txt','%s');   %文件名列表
num=size(file_name,1);  
for i_file=1:num;
    s=char(file_name(i_file,1));
    s1=['D:\matlab\biyesheji\',s];    %路径+文件名
    data=importdata(s1);
因为才刚开始学几天,还有很多地方不懂,可能会犯很低级的错误,请多多指教!
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2018-3-14 10:49:20 | 显示全部楼层 |取消关注该作者的回复
1374203670 发表于 2018-3-14 09:28
dic=dir(fullfile(['D:\matlab\biyesheji'],'*.txt'));
for i=1:size(dic,1)
data=importdata(['D:\matla ...

非常谢谢!!!我已经画出来了!!!
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2018-3-14 10:50:17 | 显示全部楼层 |取消关注该作者的回复
一片绿叶 发表于 2018-3-13 23:40
我认为,你可以把多个文件数据写到一个文件中;或者读取文件夹中的所有文件,再用循环语句一个一个 ...

恩恩,谢谢,听了你的建议百度之后画出来了!!!非常感谢!!!
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2018-3-14 10:53:14 | 显示全部楼层 |取消关注该作者的回复
午后阳光 发表于 2018-3-13 16:58
clc;
clear all;
file_name=textread('G:\filename.txt','%s');   %文件名列表

谢谢你,我已经画出来了,用的是dir命令,感觉程序更简短一点,以下是我的程序,仅作交流讨论,非常感谢你能回答我的问题,谢谢!
folder= 'D:\matlab\biyesheji';
files = dir([folder '\*.txt']);
for j=1:length(files)
    name=files(j).name;
    data=load([folder '\' name]);
密码修改失败请联系qq:937062711
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表