comm.EyeDiagramのMATLAB commpilerでのコンパイル後の動作不具合
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Kazuhiro Kashiwakura
le 10 Juil 2019
Commenté : Kazuhiro Kashiwakura
le 25 Juil 2019
Modeling a High-Speed Backplane (4-Port S-Parameters to a Rational Function)を参考に
アイダイアグラムを表示するスクリプトを書き、MATLAB compilerを用いてコンパイルすると、
「クラス'extmgr.ConfigurationSet'のメソッド、プロパティまたはフィールド'ConfigurationSet'が認識されません」
とのエラーでアイダイアグラムが表示されません。
対処方法を教えてください。
なお、EXE化しなければ正常に動作いたします。
-以下、ソース-
clear
close all
StartTime = datetime;
disp(StartTime)
[FileName, DirName] = uigetfile('*.s4p','Select Single Mode S-Parameter!');
backplane = sparameters([DirName FileName]);
data = backplane.Parameters;
freq = backplane.Frequencies;
z0 = backplane.Impedance;
diffdata = s2sdd(data);
diffz0 = 2*z0;
%{
diffsparams = sparameters(diffdata,freq,diffz0);
figure
smithplot(diffsparams,1,1)
%}
difftransfunc = s2tf(diffdata,diffz0,diffz0,diffz0);
delayfactor = 0.98; % Delay factor. Leave at the default of zero if your
% data does not have a well-defined principle delay
rationalfunc = rationalfit(freq,difftransfunc,'DelayFactor',delayfactor);
npoles = length(rationalfunc.A);
%fprintf('The derived rational function contains %d poles.\n',npoles);
ENTER=inputdlg({'Modeling Freq.(GHz)','Enter Data Rate(Gbps)','Emphasis(%)'},'Input',[1 40], {'28','25.78125','0'});
modelfreq = str2double(ENTER{1}) * 1e9;
Nmodel = int64(modelfreq / 10e6);
datarate = str2double(ENTER{2}) * 1e9;
EMPH = str2double(ENTER{3}) / 100;
TXEQ = [1-EMPH/2 -EMPH/2];
freqsforresp = linspace(10e6,modelfreq,Nmodel)';
resp = freqresp(rationalfunc,freqsforresp);
figure
subplot(2,1,1)
plot(freq*1.e-9,20*log10(abs(difftransfunc)),'r',freqsforresp*1.e-9, ...
20*log10(abs(resp)),'b--','LineWidth',2)
title(sprintf('Rational Fitting with %d poles',npoles),'FontSize',12)
ylabel('Magnitude (decibels)')
xlabel('Frequency (GHz)')
legend('Original data','Fitting result')
subplot(2,1,2)
origangle = unwrap(angle(difftransfunc))*180/pi+360*freq*rationalfunc.Delay;
plotangle = unwrap(angle(resp))*180/pi+360*freqsforresp*rationalfunc.Delay;
plot(freq*1.e-9,origangle,'r',freqsforresp*1.e-9,plotangle,'b--', ...
'LineWidth',2)
ylabel('Detrended phase (deg.)')
xlabel('Frequency (GHz)')
legend('Original data','Fitting result')
samplespersymb = 30; %100
pulsewidth = 1/datarate;
ts = pulsewidth/samplespersymb;
numsamples = 2^17;
numplotpoints = 20000;
t_in = double((1:numsamples)')*ts;
input = sign(randn(1,ceil(numsamples/samplespersymb)));
input = conv(input,TXEQ);
input = repmat(input,[samplespersymb, 1]);
input = input(:);
[output,t_out] = timeresp(rationalfunc,input,ts);
figure
%subplot(2,1,1)
plot(t_in(1:numplotpoints)*1e9,input(1:numplotpoints),'r','LineWidth',1);hold on
title([ENTER{2},'Gbps(Emphasis=',ENTER{3},'%)'],'FontSize',12)
%ylabel('Input signal')
%xlabel('Time (ns)')
%axis([-inf,inf,-1.5,1.5])
%subplot(2,1,2)
plot(t_out(1:numplotpoints)*1e9,output(1:numplotpoints),'b','LineWidth',2);hold on
%ylabel('Output signal')
ylabel('Signal')
xlabel('Time (ns)')
axis([-inf,inf,-1.5,1.5])
legend('Input','Output','Location','best')
eyedi = comm.EyeDiagram('Name', [FileName, '-',ENTER{2},'Gbps(Emphasis=',ENTER{3},'%)'],...
'SampleRate', 1./ts, ...
'SamplesPerSymbol', samplespersymb, ...
'DisplayMode', '2D color histogram', ...
'EnableMeasurements', true, ...
'OverlayHistogram', 'Jitter', ...
'ShowBathtub', 'both', ... %Horizontal/Vertical/Both
'ShowGrid', true, ...
'YLimits', [-1.5 1.5], ...
'BathtubBER', 10.^-(1:15), ...
'BERThreshold', 1e-7,...
'OversamplingMethod', 'None',... %None/Input interpolation/Histogram interpolation
'RiseFallThresholds', [10 90], ...
'EyeLevelBoundaries', [40 60] ...
);
eyedi.Position = eyedi.Position + [0 0 0 120];
% Update the eye diagram object with the transmitted signal
estdelay = floor(rationalfunc.Delay/ts);
eyedi(output(estdelay+1:end));
EndTime = datetime;
disp(EndTime)
Réponse acceptée
Kazuya
le 18 Juil 2019
R2019a では同じエラーが発生しましたが、R2019b の prelease 版で試してみたところ
の1つ目の例題「フィルター処理された QPSK 信号のアイ ダイアグラム」を EXE 化してもちゃんとアイダイアグラムが表示されました。参考まで。
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!