CSVから取り込んだデータのisequalを用いた等価性の確認
1 view (last 30 days)
Show older comments
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)
0 Comments
Accepted Answer
michio
on 13 Feb 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);
とかいかがでしょうか。
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!