我正在尝试创建一个脚本,要求用户提供txt文件的文件名,该文件的内容稍后会被绘制。
filename = input('What is the filename (without the extension) e.g. RCP6: ','s');
if isempty(filename)
filename=input('What is the filename (without the extension) e.g. RCP6: ','s');
end
ext = input('What is the filetype (extension) e.g. .txt: ','s');
if isempty(ext)
ext=input('What is the filetype (extension) e.g. .txt: ','s');
end
filew = strcat(filename,ext)
load(filew)
A = filename
Y = A(:,1)
E = A(:,2)
plot(Y,E)
xlabel('calendar year')
ylabel('annual fossil carbon emissions (GtC)')
如上所述,代码正确连接文件名和ext,但是,似乎load(filew)没有正确加载该文件,因为例如给定文件名= RCP3PD,Y = R和E = C,而不是Y存储来自RCP3PD.txt?
的第一列值有什么建议吗?我已经看到其他“来自字符串的加载文件”线程引用了sprintf()函数 - 这会适用于此吗?
答案 0 :(得分:0)
加载数据时,需要将其保存为某些内容。所以:
load(filew)
应该是
data = load(filew);
然后访问您的变量只需使用:
A = data.A; % assume that data is a struct with a field named A
Y = A(:,1);
E = A(:,2);
其他想法
您可以考虑将输入文件名的逻辑更改为:
valid = 0;
while(valid==0)
filename = input('What is the filename (without the extension) e.g. RCP6: ','s');
ext = input('What is the filetype (extension) e.g. .txt: ','s');
if exist([filename, ext], 'file')
valid = 1;
end
end
不是检查文件名是否为空,而是检查用户是否提供了实际存在的文件名/扩展名对。如果没有,那就继续问,直到他们这样做。
如果您想获得幻想,可以使用uigetfile
而不是要求用户输入文件名。这为用户提供了一个文件选择器窗口,这样您就知道他们已经选择了一个有效的文件。此外,它允许您过滤用户可以选择的文件。