comm.EyeDiagramのMATLAB commpilerでのコンパイル後の動作不具合
2 ビュー (過去 30 日間)
古いコメントを表示
Kazuhiro Kashiwakura
2019 年 7 月 10 日
コメント済み: Kazuhiro Kashiwakura
2019 年 7 月 25 日
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)
採用された回答
Kazuya
2019 年 7 月 18 日
R2019a では同じエラーが発生しましたが、R2019b の prelease 版で試してみたところ
の1つ目の例題「フィルター処理された QPSK 信号のアイ ダイアグラム」を EXE 化してもちゃんとアイダイアグラムが表示されました。参考まで。
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!