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

1 次查看(过去 30 天)
O.E
O.E 2018-2-13
评论: O.E 2018-2-13
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)

采纳的回答

michio
michio 2018-2-13
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 个评论
O.E
O.E 2018-2-13
ありがとうございます。
解決いたしました。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 プログラミング 的更多信息

Community Treasure Hunt

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

Start Hunting!