未定义的功能'减去'对于类型表的输入参数

时间:2014-09-17 12:14:47

标签: arrays matlab text

我有一个.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

我收到错误消息:

  

错误:类型为table的输入参数的未定义函数'减'。

我的问题是:

  1. 为什么当我检查T的大小时我得到ans = 1 1,为什么不ans = 220 12?

  2. 为什么我收到此错误消息?

  3. 如果我不应该在代码中直接使用表T,那么我需要将其转换为数组。我用A = table2array('T')得到了: 错误:来自非单元格数组对象的单元格内容引用 table2array中的错误(第27行)a = t {:,:}; 难道我从第一步做错了,即将.txt转换为表格(因此我得到ans = 1 1而不是220 12)?

1 个答案:

答案 0 :(得分:0)

这只是部分答案,但它应该解释为什么在尝试使用table2array时出现错误。

相关函数的输入不应该是表的名称,而应该是表本身。 因此,您应该替换:

A=table2array('T')

通过

A=table2array(T)

也许这足以帮助你解决其他问题。