【发布时间】:2016-10-20 19:00:18
【问题描述】:
我有一个 .txt(220 行 * 12 列,第一行文本,文件的其余部分是十进制数字)文件,首先我将其转换为表格:
T = readtable('xxx.txt','Delimiter','\t') 然后将 T 保存为 .mat 格式。
然后我运行了这些代码:
>> load T.mat
>> col=0;
raa=0.05;
d=0;
c=0;
n=0;
w=0;
b=0;
data4=zeros(220,10);
for col=3:12
for i=1:220
b=0;
c=0;
for j=1:220
if i~=j
d=sqrt((T(i,1)-T(j,1))^2+(T(i,2)-T(j,2))^2);
if d<30
c=(1/(d^2))*T(j,col);
b=b+c;
else
end
end
end
x=T(i,col) - (raa * b);
n=i;
data4(i,col)= x;
data4(i,1)=n;
end
% dlmwrite('trash.txt',data4,'\t')
dlmwrite('T-100spreg2-raa05.txt',data4,'\t')
end
我收到一条错误消息:
错误:表类型输入参数的未定义函数“减号”。
我的问题是:
为什么当我检查 T 的大小时,我得到 ans=1 1,为什么不是 ans=220 12?
为什么我会收到此错误消息?
如果我不应该在代码中直接使用表 T,那么我需要将其转换为数组。我使用 A=table2array('T') 并得到: 错误:来自非元胞数组对象的单元格内容引用 table2array 中的错误(第 27 行)a = t{:,:}; 难道是我从第一步开始做错了什么,即将 .txt 转换为表格(因此我得到 ans=1 1 但不是 220 12)?
【问题讨论】:
-
如果这是一个可重现的示例,则更容易找出错误。您能否包括创建一个虚拟表而不仅仅是加载语句?
-
为什么要使用表格?我认为矩阵会简单得多。您应该能够直接将文件读入矩阵而不是表格。
-
正如@DavidK 提到的,可能确实不需要使用表格。看看
doc dlmread。 -
@DavidK 只要我使用 dlmred,我就会收到一条错误消息,说读取数字时出现问题==>x y DEM asp grad DAI2 HI VI SLI2 Yield DAI1 SLI1\n。这是我的 .txt 文件的第一行。
-
不确定为什么会出现错误。试试
fscanf和textscan。我会跳过第一行并从数字开始。