如何导入以下格式的数据。
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
答案 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;