CSVから取り込んだデータのisequalを用いた等価性の確認
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
michio
il 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);
とかいかがでしょうか。
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!