首页 > 解决方案 > 在八度音程中查找和上传文件时出错

问题描述

我尝试将我的 .csv 文件转换为 .dat 格式并尝试将文件加载到 Octave 中。它抛出一个错误:

unable to find file filename

我还尝试使用语法以 .csv 格式加载文件

x = csvread(filename)

它抛出错误:

'filename' undefined near line 1 column 13.

我还尝试通过在编辑器上打开文件来加载文件,我尝试加载它,现在它显示了我

warning: load: 'filepath' found by searching load path
error: load: unable to determine file format of 'Salary_Data.dat'.

如何加载我的数据?

>> load Salary_Data.dat

error: load: unable to find file Salary_Data.dat
>> Salary_Data

error: 'Salary_Data' undefined near line 1 column 1
>> Salary_Data

error: 'Salary_Data' undefined near line 1 column 1
>> Salary_Data

error: 'Salary_Data' undefined near line 1 column 1
>> x = csvread(Salary_Data)
error: 'Salary_Data' undefined near line 1 column 13
>> x = csvread(Salary_Data.csv)
error: 'Salary_Data' undefined near line 1 column 13
>> load Salary_Data.dat

warning: load: 'C:/Users/vaith/Desktop\Salary_Data.dat' found by searching load path
error: load: unable to determine file format of 'Salary_Data.dat'
>> load Salary_Data.csv
warning: load: 'C:/Users/vaith/Desktop\Salary_Data.csv' found by searching load path
error: load: unable to determine file format of 'Salary_Data.csv'

Salary_Data.csv

YearsExperience,Salary
1.1,39343.00
1.3,46205.00
1.5,37731.00
2.0,43525.00
2.2,39891.00
2.9,56642.00
3.0,60150.00
3.2,54445.00
3.2,64445.00
3.7,57189.00
3.9,63218.00
4.0,55794.00
4.0,56957.00
4.1,57081.00
4.5,61111.00
4.9,67938.00
5.1,66029.00
5.3,83088.00
5.9,81363.00
6.0,93940.00
6.8,91738.00
7.1,98273.00
7.9,101302.00
8.2,113812.00
8.7,109431.00
9.0,105582.00
9.5,116969.00
9.6,112635.00
10.3,122391.00
10.5,121872.00

标签: octave

解决方案


好的,您在这里偶然发现了一大堆问题。

如果您在没有生成错误消息的命令的情况下不向我们提供错误消息,那将会有所帮助。

第一条消息意味着您告诉 Octave 打开一个名为filename的东西,但它找不到任何名为filename的东西。你定义了变量文件名吗?您的第二个命令和错误消息表明您没有。

你知道八度工作目录是什么吗?它与文件所在的位置相同吗?从对您的加载命令的响应来看,我猜不是。该文件位于 C:/Users/vaith/Desktop。Octave 的工作目录可能在其他地方。

(试试这个pwd命令,看看它告诉你什么。使用文件浏览器或cd命令导航到与文件相同的位置。)

用作命令 ( load file.txt) 的加载命令可以接受定义为或未定义为字符串的输入。函数格式(load('file.txt')csvread('file.txt'))必须是字符串输入。因此,您所有的 csvread 输入命令都认为您给它的是变量名,而不是文件名。

最后,load 无法读取您的数据这一事实并不过分令人惊讶。它试图猜测它是什么类型的文件以及如何加载它。我假设您尝试help load查看不同的命令选项是什么?你可以给它不同的选项来帮助它弄清楚。如果它实际上是一个 csv 文件,并且所有数字都不是文本,那么csvread如果您正确使用它,它可能仍然是您的最佳选择。 help csvread首先对你来说是个好信息。

看起来您的标题行可能会混淆加载命令。对于简单格式化的数据,csvread 命令将引入数据。它将用零替换您的标题文本。

所以,首先,导航到文件的位置:

>> cd C:/Users/vaith/Desktop

然后打开文件:

>> mydata = csvread('Salary_Data.csv')
mydata =

       0.00000       0.00000
       1.10000   39343.00000
       1.30000   46205.00000
       1.50000   37731.00000
       2.00000   43525.00000
       ...

如果您打算重用文件名,可以将其分配给变量,然后打开文件:

>> myfile = 'Salary_Data.csv'
myfile = Salary_Data.csv

>> mydata = csvread(myfile)
mydata =

       0.00000       0.00000
       1.10000   39343.00000
       1.30000   46205.00000
       1.50000   37731.00000
       2.00000   43525.00000
       ...

注意文件名是如何存储和用作带引号的字符串的,但变量名不是。此外,csvread将非数字标头信息转换为“零”。帮助csvread并向dlmread您展示如何将其更改为零以外的值,或跳过一定数量的行。如果要保留文本,则必须使用其他输入功能。


推荐阅读