repo2/atari_chips/pokeyv2/SID/investigation/testfc.m
| 1186 | markw | test = csvread('/home/markw/fpga/svn/repo/trunk/atari_800xl/atari_chips/pokeyv2/SID/investigation/output_6.csv');
|
|
| 1184 | markw | s1 = test(test(:,1)==1,:);
|
|
s2 = test(test(:,1)==2,:);
|
|||
s3 = test(test(:,1)==3,:);
|
|||
vals = reshape(s3(:,4),256,1024);
|
|||
close all;
|
|||
figure
|
|||
hold all;
|
|||
for i=1:20:255
|
|||
plot(vals(i,:));
|
|||
end
|
|||
%figure
|
|||
hold all;
|
|||
for i=1:20:255
|
|||
plot(vals2(i,:));
|
|||
end
|
|||
a = interp1(0:255,vals(:,1),0:0.01:255);
|
|||
b = interp1(0:255,vals(:,50),0:0.01:255);
|
|||
c = interp1(0:255,vals(:,99),0:0.01:255);
|
|||
funcpt1 = vals(:,1);
|
|||
funcpt1 = interp1(0:255,funcpt1,0:0.01:255);
|
|||
funcpt2 = vals(:,end);
|
|||
funcpt2 = interp1(0:255,funcpt2,0:0.01:255);
|
|||
idx = find(funcpt2>funcpt1(end),1,'first');
|
|||
func = [funcpt1 funcpt2(idx:end)];
|
|||
func(end:end+500000) = func(end);
|
|||
close all;
|
|||
figure;
|
|||
plot(func(1:30000));
|
|||
hold all;
|
|||
x=-9.8:((9.8*2)/29950):9.8;
|
|||
sigmoid = 1./(1.+e.^-x);
|
|||
minf = min(func);
|
|||
maxf = max(func);
|
|||
sigmoid = sigmoid.*(maxf-minf);
|
|||
sigmoid = sigmoid + minf;
|
|||
plot(sigmoid);
|
|||
func = sigmoid;
|
|||
perstep = 100.5; %measured...
|
|||
%x = 255-ceil((256/1024)*(1:1024));
|
|||
%y = 1:1024;
|
|||
%ind = sub2ind(size(vals),x,y);
|
|||
%orig1 = vals(ind);
|
|||
%loc1 = arrayfun(@(x) find(x<=func,1,'first'),orig1);
|
|||
%orig2 = vals(1,:);
|
|||
%loc2 = arrayfun(@(x) find(x<=func,1,'first'),orig2);
|
|||
%loc = loc1.-loc2;
|
|||
%loc = loc1.-(100.5.*x);
|
|||
%loc = loc2;
|
|||
%close all
|
|||
%plot(loc)
|
|||
%hold all;
|
|||
%plot(s1(:,5).*10.2)
|
|||
loc = 1+s1(:,5).*10.2;
|
|||
vals2 = nan(size(vals));
|
|||
for i=1:1024
|
|||
idx = round(loc+(perstep)*(i-1));
|
|||
idx = max(idx,1);
|
|||
idx = min(idx,numel(func));
|
|||
vals2(i,:) = func(idx);
|
|||
end
|
|||
figure;
|
|||
plot(loc)
|
|||
figure;
|
|||
plot(func(1:30000))
|
|||
figure;
|
|||
plot(a);
|
|||
hold all;
|
|||
plot(b);
|
|||
%b is shifted left
|
|||
plot(shift(a,-1150));
|
|||
plot(c);
|
|||
plot(shift(a,-2300));
|
|||
legend({'a','b','bsyth','c','csynth'});
|
|||
%baseresistance=1.08e6
|
|||
%minimumfetresistance=1.0e4
|
|||
baseresistance=1147036.4394268463
|
|||
minimumfetresistance=16125.154840564108
|
|||
%baseresistance = 0;
|
|||
minimumfetresistance = 10000;
|
|||
close all;
|
|||
figure;
|
|||
hold all;
|
|||
fcbase = s1(:,4); %store?
|
|||
distortion = 0.2
|
|||
figure;; %store?
|
|||
fetresistance = fcbase.*distortion; %mult - ok
|
|||
%final = (dynamicresistance.+baseresistance)./(dynamicresistance.*baseresistance); %add - ok,mult - ok and div - bad
|
|||
final = 1./(minimumfetresistance.+fetresistance) + 1./baseresistance; %Simplification ... 1./dynamicresistance... + constant
|
|||
caps = (1 / (470e-12 * 1e6));
|
|||
final = final.*caps;
|
|||
plot(final);
|
|||
distortion = 0.4;
|
|||
fetresistance = fcbase.*distortion;
|
|||
dynamicresistance = minimumfetresistance.+fetresistance;
|
|||
final = (dynamicresistance.+baseresistance)./(dynamicresistance.*baseresistance);
|
|||
caps = (1 / (470e-12 * 1e6));
|
|||
final = final.*caps;
|
|||
plot(final);
|
|||
close all;
|
|||
figure;
|
|||
x = 1:1000;
|
|||
y = x;
|
|||
y2 = x+50;
|
|||
plot(x,y);
|
|||
hold all;
|
|||
plot(x,y2);
|
|||
%i.e. we need to shift to the left, while keeping the shape!
|
|||
%except its squeezed at the edges...
|
|||
%So straight line (kinked by dac), shifted left and rolled round a cylinder!
|
|||
close all;
|
|||
%plot(0:2047,interp1(0:2:2047,1./test(:,2),0:2047))
|
|||
Type3Offset=1.8e6
|
|||
Type3Steepness=1.006
|
|||
%Type3Offset=8e6
|
|||
%Type3Steepness=1.0052
|
|||
figure;
|
|||
plot(0:2047,interp1(0:2:2047,Type3Offset./(Type3Steepness.^test(:,4)),0:2047))
|
|||
figure;
|
|||
plot(0:2047,interp1(0:2:2047,test(:,2),0:2047))
|
|||
figure;
|
|||
figure;
|
|||
hold all;
|
|||
ft = polyfit(0:2047,curves(3).f,10);
|
|||
smoothed = polyval(ft,0:2047);
|
|||
for i=1:20:255
|
|||
sh = i*10;
|
|||
idx = sh:2047+sh;
|
|||
idx(idx>2048)=2048;
|
|||
adj = curves(3).f - smoothed + smoothed(:,idx);
|
|||
plot(0:2047,adj);
|
|||
end
|
|||
figure;
|
|||
plot(curves(2).f);
|
|||
hold all;
|
|||
ft = polyfit(0:2047,curves(2).f,10);
|
|||
plot(polyval(ft,0:2047));
|
|||
%fC = 1/2piRf1
|
|||
Rf = 1./(test(:,2).*2.*pi);
|
|||
F = 1./(2.*pi.*Rf);
|
|||
%%%%%%%%%%%%%%%%%%%%
|
|||
%q from resipfp - c++
|
|||
resonanceFactor = 1;
|
|||
Qval = 0:15;
|
|||
Qcpp = 1.0./(2.0.^((4.0.-real(Qval))./8.0));
|
|||
Q8580java = (0.707 .+ resonanceFactor .* Qval ./ 15);
|
|||
Q6581java = (0.5 .+ resonanceFactor .* Qval ./ 18);
|
|||
close all;
|
|||
figure;
|
|||
plot(Qcpp);
|
|||
hold all;
|
|||
plot(Q8580java);
|
|||
plot(Q6581java);
|
|||
legend({'qcpp','q8580j','q6581j'});
|
|||
%%%%%%%%%%%%%%%%%%%%%%%
|
|||