You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

96 lines
1.9 KiB

% diff_codec.m
%
% Plots differences between two states in two runs of the codec,
% e.g. x86 and embedded.
%
% Copyright David Rowe 2013
%
% This program is distributed under the terms of the GNU General Public License
% Version 2
function diff_codec(samname1, samname2, model1_prefix, model2_prefix)
fs1=fopen(samname1,"rb");
s1=fread(fs1,Inf,"short");
fs2=fopen(samname2,"rb");
s2=fread(fs2,Inf,"short");
st = 1;
en = length(s1);
figure(1);
clf;
subplot(211);
l1 = strcat("r;",samname1,";");
plot(s1(st:en), l1);
axis([1 en-st min(s1(st:en)) max(s1(st:en))]);
subplot(212);
l2 = strcat("r;",samname2,";");
plot(s2(st:en),l2);
axis([1 en-st min(s1(st:en)) max(s1(st:en))]);
figure(2)
plot(s1(st:en)-s2(st:en));
max(s1(st:en)-s2(st:en));
model_name1 = strcat(model1_prefix,"_model.txt");
model1 = load(model_name1);
model_name1q = strcat(model1_prefix,"_qmodel.txt");
model1q = load(model_name1q);
model_name2 = strcat(model2_prefix,"_model.txt");
model2 = load(model_name2);
model_name2q = strcat(model2_prefix,"_qmodel.txt");
model2q = load(model_name2q);
Wo1 = model1(:,1);
L1 = model1(:,2);
Am1 = model1(:,3:82);
Wo1q = model1q(:,1);
L1q = model1q(:,2);
Am1q = model1q(:,3:82);
Wo2 = model2(:,1);
L2 = model2(:,2);
Am2 = model2(:,3:82);
Wo2q = model2q(:,1);
L2q = model2q(:,2);
Am2q = model2q(:,3:82);
figure(3)
subplot(211)
plot(Wo1)
title('Wo1');
subplot(212)
plot(Wo1-Wo2)
figure(4)
subplot(211)
plot(Wo1q)
title('Wo1q');
subplot(212)
plot(Wo1q-Wo2q)
figure(5)
subplot(211)
plot(L1)
title('L1');
subplot(212)
plot(L1-L2)
figure(6)
subplot(211)
plot(L1q)
title('L1q');
subplot(212)
plot(L1q-L2q)
figure(7)
l=length(L1q);
sm=zeros(1,l);
for f=1:l
%printf("f %d L1q %d L2q %d\n",f,L1q(f),L2q(f));
sm(f) = sum(10*log10(Am1q(f,1:L1q(f))) - 10*log10(Am2q(f,1:L2q(f))));
end
plot(sm)
title('Am1q - Am2q');
endfunction