Borrar filtros
Borrar filtros

CSVから取り込んだ​データのisequa​lを用いた等価性の確​認

4 visualizaciones (últimos 30 días)
O.E
O.E el 13 de Feb. de 2018
Comentada: O.E el 13 de Feb. de 2018
2つのCSVファイルが等しいものかどうかを確認するためのプログラムを作成し、どの部分が異なるのかを確認しようと考えています。
そこでisequalを用いて等価性を判別した後に、IF文を用いて該当箇所を検索するコードを作成しました。
実行したところisequalがFalseになったため、IF文を用いて差分を検索しましたが、見つかりませんでした。
コードは以下の通りです。(添付の二つのCSVファイルの差分を検出しようとしています。)
clear
Ts=1;
filename = 'sys_out.csv';
listing = dir(filename);
value = getfield(listing, 'bytes');
switch value
case 0
sprintf('sys_outなし');
otherwise
IN=csvread(filename);
end
filename = 'test.csv';
listing = dir(filename);
value = getfield(listing, 'bytes');
switch value
case 0
sprintf('testなし');
otherwise
IDEAL=csvread(filename);
end
tf = isequal(IN,IDEAL)
switch tf
case 0
n = size(IN);
Table = zeros(n(1,1),2);
for a = n(1,1)
if IN(n(1,1),1) == IDEAL(n(1,1),1)
Table(n(1,1),1) = 0;
else
Table(n(1,1),1) = 1;
end
if IN(n(1,1),2) == IDEAL(n(1,1),2)
Table(n(1,1),2) = 0;
else
Table(n(1,1),2) = 1;
end
end
case 1
end
k = find(Table)

Respuesta aceptada

michio
michio el 13 de Feb. de 2018
f = isequal(IN,IDEAL)
以降の for ループがループになっていない模様です。ただ、異なる点を見つけるなら
diff = IN - IDEAL;
[row,col,v] = find(diff)
でもOKかと思います。ある程度の誤差を許す場合は例えば
error = 1e-10;
diff = abs(IN - IDEAL) > error;
[row,col,v] = find(diff);
とかいかがでしょうか。
  1 comentario
O.E
O.E el 13 de Feb. de 2018
ありがとうございます。
解決いたしました。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre プログラミング en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!