Octave 如何在倍频程中加载用户指定的文件

Octave 如何在倍频程中加载用户指定的文件,octave,Octave,我有一个非常短的脚本,我在八度音阶中运行,我想读取一个用户指定的文本文件。它适用于我的64位笔记本电脑,但不适用于我的32位笔记本电脑。八度音阶版本是3.2.2 plotinfra.m filename=uiputfile data=load(filename); plot(data(:,1),data(:,2)); 在我的另一台笔记本电脑上,这会显示一个文件系统菜单,我可以在其中选择要加载的特定文件。在这台笔记本电脑上,我看到了以下错误消息: 错误:第1行第19列附近未定义uiputfile

我有一个非常短的脚本,我在八度音阶中运行,我想读取一个用户指定的文本文件。它适用于我的64位笔记本电脑,但不适用于我的32位笔记本电脑。八度音阶版本是3.2.2

plotinfra.m

filename=uiputfile
data=load(filename);
plot(data(:,1),data(:,2));
在我的另一台笔记本电脑上,这会显示一个文件系统菜单,我可以在其中选择要加载的特定文件。在这台笔记本电脑上,我看到了以下错误消息:

错误:第1行第19列附近未定义uiputfile错误:调用自:错误:第1行第17列处的plotinfra.m


如果我使用路径硬编码
文件名
,它就会工作。我也尝试过使用
uigetfile
,但也没有成功。

我使用的是Ubuntu 18.04 64位Linux Octave 4.2.2,看看这是否适合你。它将文件名存储在变量
file\u name
中,路径位置存储在变量
path\u dir

% create your dataset (exampledata) 
x = (-1:0.1:1); 
y = sin(x); 
data = zeros(length(x),2); 
data(:,1) = x; 
data(:,2) = y; 

% save data to file (your textfile) 
save('-ascii','data2.txt','data'); 

%load textfile 
%data2 = load('data2.txt'); %hard coded
[file_name,path_dir] = uigetfile('*.txt'); %pops up uibox choose data2.txt
data2 = load(strcat(path_dir,file_name)); %loads the file and the data

%plot data 
plot(data2(:,1),data2(:,2)); 
。当我在倍频程中输入
edit uiputfile
时,我在文件顶部看到一行:

##版权所有(C)2010-2019 Kai Habel
因此,这个函数似乎是在您释放倍频程之后创建的。这就是您收到“uiputfile undefined”错误消息的原因


您必须升级Octave版本才能使用此功能。

您是说Octave 4.2.2吗?Octave 3.2.2是一个非常旧的版本,可能没有该选项。如果在硬编码路径中工作,则最有可能的问题是文件路径存储在
filename
变量中的方式。笔记本电脑中存储了哪些可用,哪些不可用?比较这些差异应该会有所帮助
filename=uiputfile
将仅存储文件名。因此,如果您仅以文件名加载该文件,它必须位于matlab路径中。更好的方法是使用
[filename,path]=uiputfile
,然后加载
load([path name])
,从而给出完整的路径。@tryman我只想能够选择笔记本电脑上的文本文件,并将其放入变量
filename
,然后加载到
数据中。如果我加载([path name])
路径名是否真的在括号内?或者是
filename,path
?@RickT很奇怪,我知道它在我的另一台笔记本电脑上b/c工作,这台笔记本电脑有
3.2.2
以及
uiputfile
功能fine@NaN是的,它将字符串
路径
和字符串
文件名
连接成一个字符串。例如,对于文件名“myfile.txt”和路径“C:\myfolder\”
[path filename]
应该生成一个字符串“C:\myfolder\myfile.txt”。注意:这是我之前评论中的一个错误,我的意思是
[path filename]
。仍然出现
错误:uigetfile未定义
,可能我会把它塞住,因为octave的版本太旧,无法使用
uigetfile
uiputfile