comm.EyeDiagramのMATLAB commpilerでのコンパイル後の動作不具合
Afficher commentaires plus anciens
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)
4 commentaires
Kazuya
le 10 Juil 2019
「クラス'extmgr.ConfigurationSet'のメソッド、プロパティまたはフィールド'ConfigurationSet'が認識されません」
以外に表示されているエラーメッセージはありませんか?
Kazuhiro Kashiwakura
le 10 Juil 2019
MATLAB Compiler の制約に引っかかっているのでしょうか・・。
Communications Toolbox の項目を見ると UIs が Cannot be compiled に入っています。。
アイダイアグラム表示はUIなのか・・疑問です。
別ページに飛ばずに確認できるよう添付します。

Kazuhiro Kashiwakura
le 12 Juil 2019
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur 信号処理 dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!