You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
BS67BW Fourier frequency labels are mis-scaled and off by one bin #16
BS67BW uses Fs=4*Fc instead of 4*Fc/3, and its negative FFT window starts at Nz/2 instead of Nz/2+1. A known transmit delay is therefore compensated with the wrong frequency. On current dev, this MWE leaves −90.35°; expected 0°.
Paste into MATLAB from the repository root (no GPU/MEX):
addpath(genpath('echoframe/matlab/core'));
fc =1e6; dt =1/(8*fc);
P = struct('pitch',3e-4,'nElements',8);
T = struct('c0',1540,'steer',0,'apodization',ones(8,1), ...
'transmitDelays',dt*ones(8,1));
R = struct('samplingMode','BS67BW','nBuffers',1,'nSamples',512, ...
'nSamplesIQ',256,'nTransmissions',1);
[~,~,~,R] = get_system_parameters( ...
struct('Parameters',struct('numRcvChannels',128)), ...
struct('frequency',1,'numelements',8),T,R);
S = echoframe_setup_fourier(P,T,R,struct('c0',1540,'nx',128,'nz',256));
t = (0:511)'*3/(4*fc);
pack = @(x) complex(x(1:2:end),-x(2:2:end));
a = fft(pack(cos(2*pi*fc*t)));
b = fft(pack(cos(2*pi*fc*(t-dt))));
[~,k] = max(abs(a));
q = b(k)/a(k)*exp(1i*double(S.frequencyAxis(k))*double(S.planewaveDelays(1,2)));
fprintf('Residual phase: %.6f degrees\n',angle(q)*180/pi);
assert(abs(q-1)<1e-5,'BS67BW transmit-delay compensation failed');
Activity
sdiebolt commentedon Oct 7, 2026
To demonstrate in Effusive (VSX simulation mode), this is what the L35-16vX sequence (using BS67W) would give with the current release of EchoFrame:
And after the fix in #17