我正在尝试将外部文本数据文件读入Octave
。该文件包含两列数字,每列都有一个变量名称作为标题。以下是名为'simple_octave_dataset_with_names.txt'的文件内容:
mycol1 mycol2
0.632736 -0.097964
0.410370 0.196382
0.426642 1.011637
0.135770 -0.112614
0.034180 -0.874835
如果没有列名,我可以使用Octave GUI
中的复制和粘贴来读取文件:
chdir 'C:/Users/general1/Documents/simple Octave programs/'
myData = [
0.632736 -0.097964
0.410370 0.196382
0.426642 1.011637
0.135770 -0.112614
0.034180 -0.874835
]
sum(myData)
#ans =
#
# 1.63970 0.12261
如果没有列名,我可以像这样读取外部文件:
myexternalData = load('simple_octave_dataset.txt')
#myexternalData =
#
# 0.632736 -0.097964
# 0.410370 0.196382
# 0.426642 1.011637
# 0.135770 -0.112614
# 0.034180 -0.874835
sum(myexternalData)
#ans =
#
# 1.63970 0.12261
如果有列名,我可以像这样读取外部数据文件:
myexternalDatawithnames = importdata('simple_octave_dataset_with_names.txt', delimiterIn = ' ', headerlinesIn = 1)
然而,这不起作用:
sum(myexternalDatawithnames)
# error: sum: wrong type argument 'scalar struct'
如果有列名,我如何将两列相加? 这是解决方案我发现了这个问题:
sum(myexternalDatawithnames.data)
#ans =
#
# 1.63970 0.12261
如何按列名称引用两列时对两列进行求和?
如何在按名称引用第一列时,只对第一列求和?
如何在使用load('simple_octave_dataset.txt')
时添加列名,然后在按名称引用第二列时对其进行求和?
如何使用带有和不带列名的C
语法读取文件?
感谢您对这些问题的任何帮助?我知道他们非常基本。我是一名R
用户,正在学习Octave
并且已经尝试自己解决这个问题很长一段时间了。
答案 0 :(得分:1)
可以编写简单的脚本,将文件中的数据分配给名称来自第1行文件的变量。使用名称创建脚本 - readfile.m :
A=importdata(filename , ' ',1);
for k = 1 : length(A.colheaders)
% A.colheaders{1,k} - name of column #k
% A.data(:,k) - data of column #k
eval([A.colheaders{1,k} ' = A.data(:,' int2str(k) ');']);
end
clear A;
对于脚本的演示工作,创建名称为' simple_octave_dataset_with_names.txt 的文本文件':
mycol1 mycol2
0.632736 -0.097964
0.410370 0.196382
0.426642 1.011637
0.135770 -0.112614
0.034180 -0.874835
输入Matlab / Octave:
>> filename='simple_octave_dataset_with_names.txt';
>> readfile
>> mycol1, mycol2
mycol1 =
0.632736
0.410370
0.426642
0.135770
0.034180
mycol2 =
-0.097964
0.196382
1.011637
-0.112614
-0.874835
>> sum(mycol1)
ans = 1.6397
>> sum(mycol2)
ans = 0.12261
答案 1 :(得分:0)
如果我知道变量名称,我可以手动分配它们:
[mycol1,mycol2] = textread ('simple_octave_dataset_with_names.txt', '%f %f', 'headerlines', 1, 'delimiter', ' ')
sum(mycol1)
#ans = 1.6397
sum(mycol2)
#ans = 0.12261
我不希望手动分配变量名,而是从importdata
colheaders
单元格中提取它们。如果我弄清楚如何做到这一点,我会在这里发布解决方案。