从文本文件导入Matlab数据

时间:2017-05-03 07:38:04

标签: matlab import

如何导入以下格式的数据。

1.0,X
.,-1.0

表的大小可能不同。如在下一个文件中也可以是有效的输入文件

.,.,.,1.0
.,X,.,-1.0
.,.,.,.

我尝试使用readtable读取数据,然后使用strcmp将值分配给不同的矩阵,但它不起作用。我做错了什么。

代码:

foo = readtable(environment_file)
bar = zeros(size(foo,1),size(foo,2));

for i = 1:size(foo,1)
   for j = 1:size(foo,2)
        if strcmp(foo(i,j),'.')
            bar(i,j) = 3;
        elseif strcmp(foo(i,j),'X')
            bar(i,j) = -10;
        elseif strcmp(foo(i,j),'1.0')
            bar(i,j) = 1;
        elseif strcmp(foo(i,j),'-1.0')
            bar(i,j) = -1;
        end
   end
end
bar

1 个答案:

答案 0 :(得分:0)

您的代码中存在两个问题。一个是readtable将文件作为表读取,并将文件中的第一行作为列的名称。因此,您应该在文件顶部添加名称。

其次,要访问表的内容,您需要使用{}而不是()。此外,不需要使用for循环,因为您可以使用逻辑索引将值分配给矩阵bar_b。因此,更改的代码如下:

dataArray = readtable('environment_file.txt');
[n, m] = size(dataArray);
bar_b = zeros(n, m);
bar_b(strcmp(dataArray{:, :}, '.')) = 3;
bar_b(strcmp(dataArray{:, :}, 'X')) = -10;
bar_b(strcmp(dataArray{:, :}, '1.0')) = 1;
bar_b(strcmp(dataArray{:, :}, '-1.0')) = -1;