Tag Archives: matlab
FFT of a frequency sweep using logarithmic spacing.
Hello,
I’ve been trying to obtain the FFT of a frequnecy sweep performed using a logarithmic progression. The signal was generated using a waveform generator, but is similar to that obtained using the chirp function as in the example below.
% Define parameters
Fs = 10000; % Sampling frequency (Hz)
T = 1/Fs; % Sampling period
L = Fs*2; % Length of signal
t = (0:L-1)*T; % Time vector
% Generate frequency sweep signal
f1 = 1; % Start frequency (Hz)
f2 = 2000; % End frequency (Hz)
y = 0.5*chirp(t, f1, T*L, f2, ‘logarithmic’);
% Calculate FFT
Y = fft(y);
% Calculate the frequency axis
f = Fs*(0:(L/2))/L;
% Normalize the FFT result by the amplitude of the original signal
P2 = abs(Y/L);
P1_arb = P2(1:L/2+1);
P1_arb(2:end-1) = 2*P1_arb(2:end-1);
% Plot signal and FFT
figure;
subplot(1, 2, 1)
plot(t, y)
title(‘Generated Signal’)
xlabel(‘Time (s)’);
ylabel(‘Amplitude (V)’);
subplot(1, 2, 2)
plot(f, P1_arb);
title(‘Log Chirp’);
xlabel(‘Frequency (Hz)’);
ylabel(‘|Y(f)|’);
When plotting the signal it’s clear that the amplitude is 0.5. However, the FFT shows a variable amplitude which is nowhere close to the value of 0.5 expected.
If instead the chirp function is set to ‘linear’ the result is a constant amplitude across the frequency range but the amplitude is 0.008, which I don’t understand how it is related to the inital value of 0.5.
y = 0.5*chirp(t, f1, T*L, f2, ‘linear’);
% Calculate FFT
Y = fft(y);
% Calculate the frequency axis
f = Fs*(0:(L/2))/L;
% Normalize the FFT result by the amplitude of the original signal
P2 = abs(Y/L);
P1_arb = P2(1:L/2+1);
P1_arb(2:end-1) = 2*P1_arb(2:end-1);
% Plot signal and FFT
figure;
subplot(1, 2, 1)
plot(t, y)
title(‘Generated Signal’)
xlabel(‘Time (s)’);
ylabel(‘Amplitude (V)’);
subplot(1, 2, 2)
plot(f, P1_arb);
title(‘Linear Chirp’);
xlabel(‘Frequency (Hz)’);
ylabel(‘|Y(f)|’);
Could you help me normalize the resulting FFT in order to obtain the expected amplitude.
Thank you,
NunoHello,
I’ve been trying to obtain the FFT of a frequnecy sweep performed using a logarithmic progression. The signal was generated using a waveform generator, but is similar to that obtained using the chirp function as in the example below.
% Define parameters
Fs = 10000; % Sampling frequency (Hz)
T = 1/Fs; % Sampling period
L = Fs*2; % Length of signal
t = (0:L-1)*T; % Time vector
% Generate frequency sweep signal
f1 = 1; % Start frequency (Hz)
f2 = 2000; % End frequency (Hz)
y = 0.5*chirp(t, f1, T*L, f2, ‘logarithmic’);
% Calculate FFT
Y = fft(y);
% Calculate the frequency axis
f = Fs*(0:(L/2))/L;
% Normalize the FFT result by the amplitude of the original signal
P2 = abs(Y/L);
P1_arb = P2(1:L/2+1);
P1_arb(2:end-1) = 2*P1_arb(2:end-1);
% Plot signal and FFT
figure;
subplot(1, 2, 1)
plot(t, y)
title(‘Generated Signal’)
xlabel(‘Time (s)’);
ylabel(‘Amplitude (V)’);
subplot(1, 2, 2)
plot(f, P1_arb);
title(‘Log Chirp’);
xlabel(‘Frequency (Hz)’);
ylabel(‘|Y(f)|’);
When plotting the signal it’s clear that the amplitude is 0.5. However, the FFT shows a variable amplitude which is nowhere close to the value of 0.5 expected.
If instead the chirp function is set to ‘linear’ the result is a constant amplitude across the frequency range but the amplitude is 0.008, which I don’t understand how it is related to the inital value of 0.5.
y = 0.5*chirp(t, f1, T*L, f2, ‘linear’);
% Calculate FFT
Y = fft(y);
% Calculate the frequency axis
f = Fs*(0:(L/2))/L;
% Normalize the FFT result by the amplitude of the original signal
P2 = abs(Y/L);
P1_arb = P2(1:L/2+1);
P1_arb(2:end-1) = 2*P1_arb(2:end-1);
% Plot signal and FFT
figure;
subplot(1, 2, 1)
plot(t, y)
title(‘Generated Signal’)
xlabel(‘Time (s)’);
ylabel(‘Amplitude (V)’);
subplot(1, 2, 2)
plot(f, P1_arb);
title(‘Linear Chirp’);
xlabel(‘Frequency (Hz)’);
ylabel(‘|Y(f)|’);
Could you help me normalize the resulting FFT in order to obtain the expected amplitude.
Thank you,
Nuno Hello,
I’ve been trying to obtain the FFT of a frequnecy sweep performed using a logarithmic progression. The signal was generated using a waveform generator, but is similar to that obtained using the chirp function as in the example below.
% Define parameters
Fs = 10000; % Sampling frequency (Hz)
T = 1/Fs; % Sampling period
L = Fs*2; % Length of signal
t = (0:L-1)*T; % Time vector
% Generate frequency sweep signal
f1 = 1; % Start frequency (Hz)
f2 = 2000; % End frequency (Hz)
y = 0.5*chirp(t, f1, T*L, f2, ‘logarithmic’);
% Calculate FFT
Y = fft(y);
% Calculate the frequency axis
f = Fs*(0:(L/2))/L;
% Normalize the FFT result by the amplitude of the original signal
P2 = abs(Y/L);
P1_arb = P2(1:L/2+1);
P1_arb(2:end-1) = 2*P1_arb(2:end-1);
% Plot signal and FFT
figure;
subplot(1, 2, 1)
plot(t, y)
title(‘Generated Signal’)
xlabel(‘Time (s)’);
ylabel(‘Amplitude (V)’);
subplot(1, 2, 2)
plot(f, P1_arb);
title(‘Log Chirp’);
xlabel(‘Frequency (Hz)’);
ylabel(‘|Y(f)|’);
When plotting the signal it’s clear that the amplitude is 0.5. However, the FFT shows a variable amplitude which is nowhere close to the value of 0.5 expected.
If instead the chirp function is set to ‘linear’ the result is a constant amplitude across the frequency range but the amplitude is 0.008, which I don’t understand how it is related to the inital value of 0.5.
y = 0.5*chirp(t, f1, T*L, f2, ‘linear’);
% Calculate FFT
Y = fft(y);
% Calculate the frequency axis
f = Fs*(0:(L/2))/L;
% Normalize the FFT result by the amplitude of the original signal
P2 = abs(Y/L);
P1_arb = P2(1:L/2+1);
P1_arb(2:end-1) = 2*P1_arb(2:end-1);
% Plot signal and FFT
figure;
subplot(1, 2, 1)
plot(t, y)
title(‘Generated Signal’)
xlabel(‘Time (s)’);
ylabel(‘Amplitude (V)’);
subplot(1, 2, 2)
plot(f, P1_arb);
title(‘Linear Chirp’);
xlabel(‘Frequency (Hz)’);
ylabel(‘|Y(f)|’);
Could you help me normalize the resulting FFT in order to obtain the expected amplitude.
Thank you,
Nuno fft, frequency sweep, signal processing MATLAB Answers — New Questions
How to fix Access violation?
Recently we updated our servers to R2022b Update 9 and how we see this error.
How can I fix it?
——————————————————————————–
Access violation detected at 2024-05-13 03:00:42 -0500
——————————————————————————–
Configuration:
Crash Decoding : Disabled – No sandbox or build area path
Crash Mode : continue (default)
Default Encoding : UTF-8
Deployed : false
Graphics Driver : Microsoft Corporation GDI Generic Version 1.1.0
Graphics card 1 : Microsoft ( 0x0 ) Microsoft Hyper-V Video Version 10.0.19041.3636 (2006-6-21)
Java Version : Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
MATLAB Architecture : win64
MATLAB Entitlement ID : 5227327
MATLAB Root : C:Program FilesMATLABR2022b
MATLAB Version : 9.13.0.2553342 (R2022b) Update 9
OpenGL : software
Operating System : Microsoft Windows 10 Enterprise
Process ID : 4228
Processor ID : x86 Family 6 Model 106 Stepping 6, GenuineIntel
Session Key : 321b6d16-852e-4d86-95a5-4226eee0c75b
Window System : Version 10.0 (Build 19045)
Fault Count: 1
Abnormal termination:
Access violation
Current Thread: ‘MCR 0 interpreter thread’ id 8264
Register State (from fault):
RAX = 00000008ec814800 RBX = 00000237c5d44b78
RCX = 00000237fc8f4310 RDX = 00000237c32e9ac0
RSP = 0000008507ff8470 RBP = 0000008507ff84f9
RSI = 0000000000000000 RDI = 00000237fc8f4310
R8 = 00007ffdeee67810 R9 = 0000000000000004
R10 = 0000000000008000 R11 = 0000008507ff8620
R12 = 00000237b71ca720 R13 = 00000237fc8f6740
R14 = 0000000000000001 R15 = 00000237c5d44b70
RIP = 00007ffe40b172c2 EFL = 00010202
CS = 0033 FS = 0053 GS = 002b
Stack Trace (from fault):
[ 0] 0x00007ffe40b172c2 C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+01077954 slCheckForClose+00000034
[ 1] 0x00007ffe3fc9587b C:Program FilesMATLABR2022bbinwin64simharness.dll+00350331 sl::simharness::SlHarnessUpdater::operator=+00027979
[ 2] 0x00007ffe3fc975e5 C:Program FilesMATLABR2022bbinwin64simharness.dll+00357861 slt::serialization::InternalHarnessInfo::clearFileName+00005989
[ 3] 0x00007ffe3fc9749f C:Program FilesMATLABR2022bbinwin64simharness.dll+00357535 slt::serialization::InternalHarnessInfo::clearFileName+00005663
[ 4] 0x00007ffe3fc973cd C:Program FilesMATLABR2022bbinwin64simharness.dll+00357325 slt::serialization::InternalHarnessInfo::clearFileName+00005453
[ 5] 0x00007ffe3fc833d0 C:Program FilesMATLABR2022bbinwin64simharness.dll+00275408 sl::simharness::SlHarnessManager::destroyManager+00000064
[ 6] 0x00007ffe4a20769b C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+09664155 SlBdDomainListener::SlBdDomainListener+00004059
[ 7] 0x00007ffe40aea1fc C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00893436 NormalVariantControlVars::IsVariantControlVarsExistWithSTVAT+00001596
[ 8] 0x00007ffe40b0116c C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00987500 SLRootBDDestroyer::doWork+00000796
[ 9] 0x00007ffe4a207c36 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+09665590 SlBdDomainListener::SlBdDomainListener+00005494
[ 10] 0x00007ffe40affdca C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00982474 SLRootBD::destroyBlockDiagram+00000266
[ 11] 0x00007ffe40ae889e C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00886942 SLRootBD::CachedFixedStepSize+00000654
[ 12] 0x00007ffe40afc430 C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00967728 SLRootBD::closeSystem+00001104
[ 13] 0x00007ffe49d268f6 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04548854 SLCustomTableParamCellInfo::getCellTypeOptions+00038630
[ 14] 0x00007ffe49d2672c C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04548396 SLCustomTableParamCellInfo::getCellTypeOptions+00038172
[ 15] 0x00007ffe49d27042 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04550722 SLCustomTableParamCellInfo::getCellTypeOptions+00040498
[ 16] 0x00007ffe49daac5a C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+05090394 slSave::WriteBlockDiagram+00083386
[ 17] 0x00007ffe49dbe3fa C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+05170170 slInternal+00000522
[ 18] 0x00007ffe4aea93ea C:Program FilesMATLABR2022bbinwin64sl_proxy_interface.dll+00037866 wrapper_matl_sl_internal+00000074
[ 19] 0x00007ffe4aed2d8f C:Program FilesMATLABR2022bbinwin64builtinssl_proxy_interfacemwsl_proxy_interface_builtinimpl.dll+00077199 us_set_bundle_context_instance_com_mathworks_sl_proxy_interface_builtinimpl+00041535
[ 20] 0x00007ffe4aec8ba2 C:Program FilesMATLABR2022bbinwin64builtinssl_proxy_interfacemwsl_proxy_interface_builtinimpl.dll+00035746 us_set_bundle_context_instance_com_mathworks_sl_proxy_interface_builtinimpl+00000082
[ 21] 0x00007ffe6e486476 C:Program FilesMATLABR2022bbinwin64builtin.dll+00156790 MathWorks::builtin::BuiltinFcn::invoke+00001174
[ 22] 0x00007ffe6fa08634 C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00362036 mdLoadModuleForPackageOrClass+00007540
[ 23] 0x00007ffe6fa087c5 C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00362437 mdLoadModuleForPackageOrClass+00007941
[ 24] 0x00007ffe6f9bb8fe C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00047358
[ 25] 0x00007ffe6f9ddddd C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00187869 Mfh_MATLAB_fn_impl::dispatch+00000045
[ 26] 0x00007ffe6ee00c74 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00330868 mwboost::archive::codecvt_null<wchar_t>::do_max_length+00234740
[ 27] 0x00007ffe6ee0f1f0 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00389616 mwboost::archive::codecvt_null<wchar_t>::do_max_length+00293488
[ 28] 0x00007ffe6aaf3f11 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05717777 MathWorks::lxe::ReadOnlyXvaluePtr::operator=+00006049
[ 29] 0x00007ffe6aaf5509 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05723401 MathWorks::lxe::ReadOnlyXvaluePtr::operator=+00011673
[ 30] 0x00007ffe6aa40118 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+04981016 MathWorks::lxe::printLxeProfStatsForFeature+00300760
[ 31] 0x00007ffe6aa5a169 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05087593 MathWorks::lxe::printLxeProfStatsForFeature+00407337
[ 32] 0x00007ffe6a92d6d7 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03856087 MathWorks::lxe::GetTag+00006295
[ 33] 0x00007ffe6a917d5c C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03767644 MathWorks::lxe::SetEngineImplUnlinkFlagForAllCallsOnStack+00041244
[ 34] 0x00007ffe6a91c480 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03785856 MathWorks::lxe::SetEngineImplUnlinkFlagForAllCallsOnStack+00059456
[ 35] 0x00007ffe6eed4ab0 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+01198768 FeatureTestObservableWorkspace+00184240
[ 36] 0x00007ffe6ee3e776 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00583542 mwboost::archive::detail::pointer_oserializer<mwboost::archive::xml_oarchive,MathWorks::lxe::PreLineExecutionEvent>::save_object_ptr+00069206
[ 37] 0x00007ffe6ee4018f C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00590223 mwboost::archive::detail::pointer_oserializer<mwboost::archive::xml_oarchive,MathWorks::lxe::PreLineExecutionEvent>::save_object_ptr+00075887
[ 38] 0x00007ffe6ee9ecd3 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00978131 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00303443
[ 39] 0x00007ffe6eea0e17 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00986647 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00311959
[ 40] 0x00007ffe6ee9fd6c C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00982380 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00307692
[ 41] 0x00007ffe6f74cecc C:Program FilesMATLABR2022bbinwin64m_interpreter.dll+00577228 inEvalCmdWithLocalReturnInDesiredWSAndPublishEvents+00000076
[ 42] 0x00007ffe6fde8e95 C:Program FilesMATLABR2022bbinwin64iqm.dll+00757397 iqm::InternalEvalPlugin::inEvalCmdWithLocalReturn+00000101
[ 43] 0x00007ffe6fde87f3 C:Program FilesMATLABR2022bbinwin64iqm.dll+00755699 iqm::InternalEvalPlugin::execute+00000243
[ 44] 0x00007ffe6fc021f0 C:Program FilesMATLABR2022bbinwin64mcr.dll+00401904 mcrInstantiationError::operator=+00082560
[ 45] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 46] 0x00007ffe6fda08ea C:Program FilesMATLABR2022bbinwin64iqm.dll+00461034 iqm::Iqm::create+00035450
[ 47] 0x00007ffe6fd3e2c3 C:Program FilesMATLABR2022bbinwin64iqm.dll+00058051 iqm::BaseIqmPlugin::processMFileError+00001539
[ 48] 0x00007ffe74c8ae3c C:Program FilesMATLABR2022bbinwin64mlutil.dll+03124796 cmddistributor::IIPRunNowMessage::deliver+00000028
[ 49] 0x00007ffe726b6f08 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01732360 foundation::msg_svc::exchange::MessageQueue::deliver+00000472
[ 50] 0x00007ffe726b892f C:Program FilesMATLABR2022bbinwin64libmwms.dll+01739055 foundation::msg_svc::exchange::MessageQueue::sendReply+00004047
[ 51] 0x00007ffe726a0750 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01640272 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00076544
[ 52] 0x00007ffe726aec07 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01698823 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00135095
[ 53] 0x00007ffe726ad326 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01692454 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00128726
[ 54] 0x00007ffe74af3ddd C:Program FilesMATLABR2022bbinwin64mlutil.dll+01457629 cmddistributor::IIP::EventMgrBypass::operator=+00048125
[ 55] 0x00007ffe74ac7ee2 C:Program FilesMATLABR2022bbinwin64mlutil.dll+01277666 cmddistributor::DebugLoopEvent::serializeExplicit+00023314
[ 56] 0x00007ffe77c53eac C:Program FilesMATLABR2022bbinwin64mvm.dll+00474796 mvm::MVM::setClientCapabilities+00010684
[ 57] 0x00007ffe6fbde45a C:Program FilesMATLABR2022bbinwin64mcr.dll+00255066 mwboost::archive::codecvt_null<wchar_t>::do_out+00003370
[ 58] 0x00007ffe6fbddcb2 C:Program FilesMATLABR2022bbinwin64mcr.dll+00253106 mwboost::archive::codecvt_null<wchar_t>::do_out+00001410
[ 59] 0x00007ffe6fbb87f3 C:Program FilesMATLABR2022bbinwin64mcr.dll+00100339 mcrFunctionSignature::set_signature+00080067
[ 60] 0x00007ffe6fbd6050 C:Program FilesMATLABR2022bbinwin64mcr.dll+00221264 mwboost::archive::codecvt_null<wchar_t>::`default constructor closure’+00017616
[ 61] 0x00007ffe6fdf525a C:Program FilesMATLABR2022bbinwin64iqm.dll+00807514 iqm::PackagedTaskPlugin::execute+00000074
[ 62] 0x00007ffe6fc02350 C:Program FilesMATLABR2022bbinwin64mcr.dll+00402256 mcrInstantiationError::operator=+00082912
[ 63] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 64] 0x00007ffe6fd99c12 C:Program FilesMATLABR2022bbinwin64iqm.dll+00433170 iqm::Iqm::create+00007586
[ 65] 0x00007ffe6f46311e C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00078110 ioReadLine+00000430
[ 66] 0x00007ffe6f462f35 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00077621 ioReadLine+00000165
[ 67] 0x00007ffe6f494a10 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00281104 mnGetCommandLineBuffer+00000288
[ 68] 0x00007ffe6f494ea2 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00282274 mnParser+00000466
[ 69] 0x00007ffe6fc07c64 C:Program FilesMATLABR2022bbinwin64mcr.dll+00425060 mcr_set_enableReadingFromStdin+00013524
[ 70] 0x00007ffe6fbb87f3 C:Program FilesMATLABR2022bbinwin64mcr.dll+00100339 mcrFunctionSignature::set_signature+00080067
[ 71] 0x00007ffe6fbd6050 C:Program FilesMATLABR2022bbinwin64mcr.dll+00221264 mwboost::archive::codecvt_null<wchar_t>::`default constructor closure’+00017616
[ 72] 0x00007ffe6fdf525a C:Program FilesMATLABR2022bbinwin64iqm.dll+00807514 iqm::PackagedTaskPlugin::execute+00000074
[ 73] 0x00007ffe6fc02350 C:Program FilesMATLABR2022bbinwin64mcr.dll+00402256 mcrInstantiationError::operator=+00082912
[ 74] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 75] 0x00007ffe6fd9ade1 C:Program FilesMATLABR2022bbinwin64iqm.dll+00437729 iqm::Iqm::create+00012145
[ 76] 0x00007ffe6fd9a529 C:Program FilesMATLABR2022bbinwin64iqm.dll+00435497 iqm::Iqm::create+00009913
[ 77] 0x00007ffe6fbf06dc C:Program FilesMATLABR2022bbinwin64mcr.dll+00329436 mcrInstantiationError::operator=+00010092
[ 78] 0x00007ffe6fbf1105 C:Program FilesMATLABR2022bbinwin64mcr.dll+00332037 mcrInstantiationError::operator=+00012693
[ 79] 0x00007ffe6fbeea00 C:Program FilesMATLABR2022bbinwin64mcr.dll+00322048 mcrInstantiationError::operator=+00002704
[ 80] 0x00007ffe7ace855a C:Program FilesMATLABR2022bbinwin64mwboost_thread-vc142-mt-x64-1_75.dll+00034138 mwboost::thread::swap+00000074
[ 81] 0x00007ffea85e1bb2 C:WindowsSystem32ucrtbase.dll+00138162 configthreadlocale+00000146
[ 82] 0x00007ffea93d7344 C:WindowsSystem32KERNEL32.DLL+00095044 BaseThreadInitThunk+00000020
[ 83] 0x00007ffeaa7426b1 C:WindowsSYSTEM32ntdll.dll+00337585 RtlUserThreadStart+00000033Recently we updated our servers to R2022b Update 9 and how we see this error.
How can I fix it?
——————————————————————————–
Access violation detected at 2024-05-13 03:00:42 -0500
——————————————————————————–
Configuration:
Crash Decoding : Disabled – No sandbox or build area path
Crash Mode : continue (default)
Default Encoding : UTF-8
Deployed : false
Graphics Driver : Microsoft Corporation GDI Generic Version 1.1.0
Graphics card 1 : Microsoft ( 0x0 ) Microsoft Hyper-V Video Version 10.0.19041.3636 (2006-6-21)
Java Version : Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
MATLAB Architecture : win64
MATLAB Entitlement ID : 5227327
MATLAB Root : C:Program FilesMATLABR2022b
MATLAB Version : 9.13.0.2553342 (R2022b) Update 9
OpenGL : software
Operating System : Microsoft Windows 10 Enterprise
Process ID : 4228
Processor ID : x86 Family 6 Model 106 Stepping 6, GenuineIntel
Session Key : 321b6d16-852e-4d86-95a5-4226eee0c75b
Window System : Version 10.0 (Build 19045)
Fault Count: 1
Abnormal termination:
Access violation
Current Thread: ‘MCR 0 interpreter thread’ id 8264
Register State (from fault):
RAX = 00000008ec814800 RBX = 00000237c5d44b78
RCX = 00000237fc8f4310 RDX = 00000237c32e9ac0
RSP = 0000008507ff8470 RBP = 0000008507ff84f9
RSI = 0000000000000000 RDI = 00000237fc8f4310
R8 = 00007ffdeee67810 R9 = 0000000000000004
R10 = 0000000000008000 R11 = 0000008507ff8620
R12 = 00000237b71ca720 R13 = 00000237fc8f6740
R14 = 0000000000000001 R15 = 00000237c5d44b70
RIP = 00007ffe40b172c2 EFL = 00010202
CS = 0033 FS = 0053 GS = 002b
Stack Trace (from fault):
[ 0] 0x00007ffe40b172c2 C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+01077954 slCheckForClose+00000034
[ 1] 0x00007ffe3fc9587b C:Program FilesMATLABR2022bbinwin64simharness.dll+00350331 sl::simharness::SlHarnessUpdater::operator=+00027979
[ 2] 0x00007ffe3fc975e5 C:Program FilesMATLABR2022bbinwin64simharness.dll+00357861 slt::serialization::InternalHarnessInfo::clearFileName+00005989
[ 3] 0x00007ffe3fc9749f C:Program FilesMATLABR2022bbinwin64simharness.dll+00357535 slt::serialization::InternalHarnessInfo::clearFileName+00005663
[ 4] 0x00007ffe3fc973cd C:Program FilesMATLABR2022bbinwin64simharness.dll+00357325 slt::serialization::InternalHarnessInfo::clearFileName+00005453
[ 5] 0x00007ffe3fc833d0 C:Program FilesMATLABR2022bbinwin64simharness.dll+00275408 sl::simharness::SlHarnessManager::destroyManager+00000064
[ 6] 0x00007ffe4a20769b C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+09664155 SlBdDomainListener::SlBdDomainListener+00004059
[ 7] 0x00007ffe40aea1fc C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00893436 NormalVariantControlVars::IsVariantControlVarsExistWithSTVAT+00001596
[ 8] 0x00007ffe40b0116c C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00987500 SLRootBDDestroyer::doWork+00000796
[ 9] 0x00007ffe4a207c36 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+09665590 SlBdDomainListener::SlBdDomainListener+00005494
[ 10] 0x00007ffe40affdca C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00982474 SLRootBD::destroyBlockDiagram+00000266
[ 11] 0x00007ffe40ae889e C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00886942 SLRootBD::CachedFixedStepSize+00000654
[ 12] 0x00007ffe40afc430 C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00967728 SLRootBD::closeSystem+00001104
[ 13] 0x00007ffe49d268f6 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04548854 SLCustomTableParamCellInfo::getCellTypeOptions+00038630
[ 14] 0x00007ffe49d2672c C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04548396 SLCustomTableParamCellInfo::getCellTypeOptions+00038172
[ 15] 0x00007ffe49d27042 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04550722 SLCustomTableParamCellInfo::getCellTypeOptions+00040498
[ 16] 0x00007ffe49daac5a C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+05090394 slSave::WriteBlockDiagram+00083386
[ 17] 0x00007ffe49dbe3fa C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+05170170 slInternal+00000522
[ 18] 0x00007ffe4aea93ea C:Program FilesMATLABR2022bbinwin64sl_proxy_interface.dll+00037866 wrapper_matl_sl_internal+00000074
[ 19] 0x00007ffe4aed2d8f C:Program FilesMATLABR2022bbinwin64builtinssl_proxy_interfacemwsl_proxy_interface_builtinimpl.dll+00077199 us_set_bundle_context_instance_com_mathworks_sl_proxy_interface_builtinimpl+00041535
[ 20] 0x00007ffe4aec8ba2 C:Program FilesMATLABR2022bbinwin64builtinssl_proxy_interfacemwsl_proxy_interface_builtinimpl.dll+00035746 us_set_bundle_context_instance_com_mathworks_sl_proxy_interface_builtinimpl+00000082
[ 21] 0x00007ffe6e486476 C:Program FilesMATLABR2022bbinwin64builtin.dll+00156790 MathWorks::builtin::BuiltinFcn::invoke+00001174
[ 22] 0x00007ffe6fa08634 C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00362036 mdLoadModuleForPackageOrClass+00007540
[ 23] 0x00007ffe6fa087c5 C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00362437 mdLoadModuleForPackageOrClass+00007941
[ 24] 0x00007ffe6f9bb8fe C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00047358
[ 25] 0x00007ffe6f9ddddd C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00187869 Mfh_MATLAB_fn_impl::dispatch+00000045
[ 26] 0x00007ffe6ee00c74 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00330868 mwboost::archive::codecvt_null<wchar_t>::do_max_length+00234740
[ 27] 0x00007ffe6ee0f1f0 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00389616 mwboost::archive::codecvt_null<wchar_t>::do_max_length+00293488
[ 28] 0x00007ffe6aaf3f11 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05717777 MathWorks::lxe::ReadOnlyXvaluePtr::operator=+00006049
[ 29] 0x00007ffe6aaf5509 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05723401 MathWorks::lxe::ReadOnlyXvaluePtr::operator=+00011673
[ 30] 0x00007ffe6aa40118 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+04981016 MathWorks::lxe::printLxeProfStatsForFeature+00300760
[ 31] 0x00007ffe6aa5a169 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05087593 MathWorks::lxe::printLxeProfStatsForFeature+00407337
[ 32] 0x00007ffe6a92d6d7 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03856087 MathWorks::lxe::GetTag+00006295
[ 33] 0x00007ffe6a917d5c C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03767644 MathWorks::lxe::SetEngineImplUnlinkFlagForAllCallsOnStack+00041244
[ 34] 0x00007ffe6a91c480 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03785856 MathWorks::lxe::SetEngineImplUnlinkFlagForAllCallsOnStack+00059456
[ 35] 0x00007ffe6eed4ab0 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+01198768 FeatureTestObservableWorkspace+00184240
[ 36] 0x00007ffe6ee3e776 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00583542 mwboost::archive::detail::pointer_oserializer<mwboost::archive::xml_oarchive,MathWorks::lxe::PreLineExecutionEvent>::save_object_ptr+00069206
[ 37] 0x00007ffe6ee4018f C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00590223 mwboost::archive::detail::pointer_oserializer<mwboost::archive::xml_oarchive,MathWorks::lxe::PreLineExecutionEvent>::save_object_ptr+00075887
[ 38] 0x00007ffe6ee9ecd3 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00978131 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00303443
[ 39] 0x00007ffe6eea0e17 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00986647 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00311959
[ 40] 0x00007ffe6ee9fd6c C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00982380 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00307692
[ 41] 0x00007ffe6f74cecc C:Program FilesMATLABR2022bbinwin64m_interpreter.dll+00577228 inEvalCmdWithLocalReturnInDesiredWSAndPublishEvents+00000076
[ 42] 0x00007ffe6fde8e95 C:Program FilesMATLABR2022bbinwin64iqm.dll+00757397 iqm::InternalEvalPlugin::inEvalCmdWithLocalReturn+00000101
[ 43] 0x00007ffe6fde87f3 C:Program FilesMATLABR2022bbinwin64iqm.dll+00755699 iqm::InternalEvalPlugin::execute+00000243
[ 44] 0x00007ffe6fc021f0 C:Program FilesMATLABR2022bbinwin64mcr.dll+00401904 mcrInstantiationError::operator=+00082560
[ 45] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 46] 0x00007ffe6fda08ea C:Program FilesMATLABR2022bbinwin64iqm.dll+00461034 iqm::Iqm::create+00035450
[ 47] 0x00007ffe6fd3e2c3 C:Program FilesMATLABR2022bbinwin64iqm.dll+00058051 iqm::BaseIqmPlugin::processMFileError+00001539
[ 48] 0x00007ffe74c8ae3c C:Program FilesMATLABR2022bbinwin64mlutil.dll+03124796 cmddistributor::IIPRunNowMessage::deliver+00000028
[ 49] 0x00007ffe726b6f08 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01732360 foundation::msg_svc::exchange::MessageQueue::deliver+00000472
[ 50] 0x00007ffe726b892f C:Program FilesMATLABR2022bbinwin64libmwms.dll+01739055 foundation::msg_svc::exchange::MessageQueue::sendReply+00004047
[ 51] 0x00007ffe726a0750 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01640272 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00076544
[ 52] 0x00007ffe726aec07 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01698823 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00135095
[ 53] 0x00007ffe726ad326 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01692454 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00128726
[ 54] 0x00007ffe74af3ddd C:Program FilesMATLABR2022bbinwin64mlutil.dll+01457629 cmddistributor::IIP::EventMgrBypass::operator=+00048125
[ 55] 0x00007ffe74ac7ee2 C:Program FilesMATLABR2022bbinwin64mlutil.dll+01277666 cmddistributor::DebugLoopEvent::serializeExplicit+00023314
[ 56] 0x00007ffe77c53eac C:Program FilesMATLABR2022bbinwin64mvm.dll+00474796 mvm::MVM::setClientCapabilities+00010684
[ 57] 0x00007ffe6fbde45a C:Program FilesMATLABR2022bbinwin64mcr.dll+00255066 mwboost::archive::codecvt_null<wchar_t>::do_out+00003370
[ 58] 0x00007ffe6fbddcb2 C:Program FilesMATLABR2022bbinwin64mcr.dll+00253106 mwboost::archive::codecvt_null<wchar_t>::do_out+00001410
[ 59] 0x00007ffe6fbb87f3 C:Program FilesMATLABR2022bbinwin64mcr.dll+00100339 mcrFunctionSignature::set_signature+00080067
[ 60] 0x00007ffe6fbd6050 C:Program FilesMATLABR2022bbinwin64mcr.dll+00221264 mwboost::archive::codecvt_null<wchar_t>::`default constructor closure’+00017616
[ 61] 0x00007ffe6fdf525a C:Program FilesMATLABR2022bbinwin64iqm.dll+00807514 iqm::PackagedTaskPlugin::execute+00000074
[ 62] 0x00007ffe6fc02350 C:Program FilesMATLABR2022bbinwin64mcr.dll+00402256 mcrInstantiationError::operator=+00082912
[ 63] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 64] 0x00007ffe6fd99c12 C:Program FilesMATLABR2022bbinwin64iqm.dll+00433170 iqm::Iqm::create+00007586
[ 65] 0x00007ffe6f46311e C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00078110 ioReadLine+00000430
[ 66] 0x00007ffe6f462f35 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00077621 ioReadLine+00000165
[ 67] 0x00007ffe6f494a10 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00281104 mnGetCommandLineBuffer+00000288
[ 68] 0x00007ffe6f494ea2 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00282274 mnParser+00000466
[ 69] 0x00007ffe6fc07c64 C:Program FilesMATLABR2022bbinwin64mcr.dll+00425060 mcr_set_enableReadingFromStdin+00013524
[ 70] 0x00007ffe6fbb87f3 C:Program FilesMATLABR2022bbinwin64mcr.dll+00100339 mcrFunctionSignature::set_signature+00080067
[ 71] 0x00007ffe6fbd6050 C:Program FilesMATLABR2022bbinwin64mcr.dll+00221264 mwboost::archive::codecvt_null<wchar_t>::`default constructor closure’+00017616
[ 72] 0x00007ffe6fdf525a C:Program FilesMATLABR2022bbinwin64iqm.dll+00807514 iqm::PackagedTaskPlugin::execute+00000074
[ 73] 0x00007ffe6fc02350 C:Program FilesMATLABR2022bbinwin64mcr.dll+00402256 mcrInstantiationError::operator=+00082912
[ 74] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 75] 0x00007ffe6fd9ade1 C:Program FilesMATLABR2022bbinwin64iqm.dll+00437729 iqm::Iqm::create+00012145
[ 76] 0x00007ffe6fd9a529 C:Program FilesMATLABR2022bbinwin64iqm.dll+00435497 iqm::Iqm::create+00009913
[ 77] 0x00007ffe6fbf06dc C:Program FilesMATLABR2022bbinwin64mcr.dll+00329436 mcrInstantiationError::operator=+00010092
[ 78] 0x00007ffe6fbf1105 C:Program FilesMATLABR2022bbinwin64mcr.dll+00332037 mcrInstantiationError::operator=+00012693
[ 79] 0x00007ffe6fbeea00 C:Program FilesMATLABR2022bbinwin64mcr.dll+00322048 mcrInstantiationError::operator=+00002704
[ 80] 0x00007ffe7ace855a C:Program FilesMATLABR2022bbinwin64mwboost_thread-vc142-mt-x64-1_75.dll+00034138 mwboost::thread::swap+00000074
[ 81] 0x00007ffea85e1bb2 C:WindowsSystem32ucrtbase.dll+00138162 configthreadlocale+00000146
[ 82] 0x00007ffea93d7344 C:WindowsSystem32KERNEL32.DLL+00095044 BaseThreadInitThunk+00000020
[ 83] 0x00007ffeaa7426b1 C:WindowsSYSTEM32ntdll.dll+00337585 RtlUserThreadStart+00000033 Recently we updated our servers to R2022b Update 9 and how we see this error.
How can I fix it?
——————————————————————————–
Access violation detected at 2024-05-13 03:00:42 -0500
——————————————————————————–
Configuration:
Crash Decoding : Disabled – No sandbox or build area path
Crash Mode : continue (default)
Default Encoding : UTF-8
Deployed : false
Graphics Driver : Microsoft Corporation GDI Generic Version 1.1.0
Graphics card 1 : Microsoft ( 0x0 ) Microsoft Hyper-V Video Version 10.0.19041.3636 (2006-6-21)
Java Version : Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
MATLAB Architecture : win64
MATLAB Entitlement ID : 5227327
MATLAB Root : C:Program FilesMATLABR2022b
MATLAB Version : 9.13.0.2553342 (R2022b) Update 9
OpenGL : software
Operating System : Microsoft Windows 10 Enterprise
Process ID : 4228
Processor ID : x86 Family 6 Model 106 Stepping 6, GenuineIntel
Session Key : 321b6d16-852e-4d86-95a5-4226eee0c75b
Window System : Version 10.0 (Build 19045)
Fault Count: 1
Abnormal termination:
Access violation
Current Thread: ‘MCR 0 interpreter thread’ id 8264
Register State (from fault):
RAX = 00000008ec814800 RBX = 00000237c5d44b78
RCX = 00000237fc8f4310 RDX = 00000237c32e9ac0
RSP = 0000008507ff8470 RBP = 0000008507ff84f9
RSI = 0000000000000000 RDI = 00000237fc8f4310
R8 = 00007ffdeee67810 R9 = 0000000000000004
R10 = 0000000000008000 R11 = 0000008507ff8620
R12 = 00000237b71ca720 R13 = 00000237fc8f6740
R14 = 0000000000000001 R15 = 00000237c5d44b70
RIP = 00007ffe40b172c2 EFL = 00010202
CS = 0033 FS = 0053 GS = 002b
Stack Trace (from fault):
[ 0] 0x00007ffe40b172c2 C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+01077954 slCheckForClose+00000034
[ 1] 0x00007ffe3fc9587b C:Program FilesMATLABR2022bbinwin64simharness.dll+00350331 sl::simharness::SlHarnessUpdater::operator=+00027979
[ 2] 0x00007ffe3fc975e5 C:Program FilesMATLABR2022bbinwin64simharness.dll+00357861 slt::serialization::InternalHarnessInfo::clearFileName+00005989
[ 3] 0x00007ffe3fc9749f C:Program FilesMATLABR2022bbinwin64simharness.dll+00357535 slt::serialization::InternalHarnessInfo::clearFileName+00005663
[ 4] 0x00007ffe3fc973cd C:Program FilesMATLABR2022bbinwin64simharness.dll+00357325 slt::serialization::InternalHarnessInfo::clearFileName+00005453
[ 5] 0x00007ffe3fc833d0 C:Program FilesMATLABR2022bbinwin64simharness.dll+00275408 sl::simharness::SlHarnessManager::destroyManager+00000064
[ 6] 0x00007ffe4a20769b C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+09664155 SlBdDomainListener::SlBdDomainListener+00004059
[ 7] 0x00007ffe40aea1fc C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00893436 NormalVariantControlVars::IsVariantControlVarsExistWithSTVAT+00001596
[ 8] 0x00007ffe40b0116c C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00987500 SLRootBDDestroyer::doWork+00000796
[ 9] 0x00007ffe4a207c36 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+09665590 SlBdDomainListener::SlBdDomainListener+00005494
[ 10] 0x00007ffe40affdca C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00982474 SLRootBD::destroyBlockDiagram+00000266
[ 11] 0x00007ffe40ae889e C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00886942 SLRootBD::CachedFixedStepSize+00000654
[ 12] 0x00007ffe40afc430 C:Program FilesMATLABR2022bbinwin64sl_graphical_classes.dll+00967728 SLRootBD::closeSystem+00001104
[ 13] 0x00007ffe49d268f6 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04548854 SLCustomTableParamCellInfo::getCellTypeOptions+00038630
[ 14] 0x00007ffe49d2672c C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04548396 SLCustomTableParamCellInfo::getCellTypeOptions+00038172
[ 15] 0x00007ffe49d27042 C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+04550722 SLCustomTableParamCellInfo::getCellTypeOptions+00040498
[ 16] 0x00007ffe49daac5a C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+05090394 slSave::WriteBlockDiagram+00083386
[ 17] 0x00007ffe49dbe3fa C:Program FilesMATLABR2022bbinwin64libmwsimulink.dll+05170170 slInternal+00000522
[ 18] 0x00007ffe4aea93ea C:Program FilesMATLABR2022bbinwin64sl_proxy_interface.dll+00037866 wrapper_matl_sl_internal+00000074
[ 19] 0x00007ffe4aed2d8f C:Program FilesMATLABR2022bbinwin64builtinssl_proxy_interfacemwsl_proxy_interface_builtinimpl.dll+00077199 us_set_bundle_context_instance_com_mathworks_sl_proxy_interface_builtinimpl+00041535
[ 20] 0x00007ffe4aec8ba2 C:Program FilesMATLABR2022bbinwin64builtinssl_proxy_interfacemwsl_proxy_interface_builtinimpl.dll+00035746 us_set_bundle_context_instance_com_mathworks_sl_proxy_interface_builtinimpl+00000082
[ 21] 0x00007ffe6e486476 C:Program FilesMATLABR2022bbinwin64builtin.dll+00156790 MathWorks::builtin::BuiltinFcn::invoke+00001174
[ 22] 0x00007ffe6fa08634 C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00362036 mdLoadModuleForPackageOrClass+00007540
[ 23] 0x00007ffe6fa087c5 C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00362437 mdLoadModuleForPackageOrClass+00007941
[ 24] 0x00007ffe6f9bb8fe C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00047358
[ 25] 0x00007ffe6f9ddddd C:Program FilesMATLABR2022bbinwin64m_dispatcher.dll+00187869 Mfh_MATLAB_fn_impl::dispatch+00000045
[ 26] 0x00007ffe6ee00c74 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00330868 mwboost::archive::codecvt_null<wchar_t>::do_max_length+00234740
[ 27] 0x00007ffe6ee0f1f0 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00389616 mwboost::archive::codecvt_null<wchar_t>::do_max_length+00293488
[ 28] 0x00007ffe6aaf3f11 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05717777 MathWorks::lxe::ReadOnlyXvaluePtr::operator=+00006049
[ 29] 0x00007ffe6aaf5509 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05723401 MathWorks::lxe::ReadOnlyXvaluePtr::operator=+00011673
[ 30] 0x00007ffe6aa40118 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+04981016 MathWorks::lxe::printLxeProfStatsForFeature+00300760
[ 31] 0x00007ffe6aa5a169 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+05087593 MathWorks::lxe::printLxeProfStatsForFeature+00407337
[ 32] 0x00007ffe6a92d6d7 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03856087 MathWorks::lxe::GetTag+00006295
[ 33] 0x00007ffe6a917d5c C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03767644 MathWorks::lxe::SetEngineImplUnlinkFlagForAllCallsOnStack+00041244
[ 34] 0x00007ffe6a91c480 C:Program FilesMATLABR2022bbinwin64m_lxe.dll+03785856 MathWorks::lxe::SetEngineImplUnlinkFlagForAllCallsOnStack+00059456
[ 35] 0x00007ffe6eed4ab0 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+01198768 FeatureTestObservableWorkspace+00184240
[ 36] 0x00007ffe6ee3e776 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00583542 mwboost::archive::detail::pointer_oserializer<mwboost::archive::xml_oarchive,MathWorks::lxe::PreLineExecutionEvent>::save_object_ptr+00069206
[ 37] 0x00007ffe6ee4018f C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00590223 mwboost::archive::detail::pointer_oserializer<mwboost::archive::xml_oarchive,MathWorks::lxe::PreLineExecutionEvent>::save_object_ptr+00075887
[ 38] 0x00007ffe6ee9ecd3 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00978131 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00303443
[ 39] 0x00007ffe6eea0e17 C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00986647 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00311959
[ 40] 0x00007ffe6ee9fd6c C:Program FilesMATLABR2022bbinwin64libmwlxemainservices.dll+00982380 mwboost::archive::detail::iserializer<mwboost::archive::text_iarchive,MathWorks::MatlabComponents::ComponentIdentifier>::load_object_data+00307692
[ 41] 0x00007ffe6f74cecc C:Program FilesMATLABR2022bbinwin64m_interpreter.dll+00577228 inEvalCmdWithLocalReturnInDesiredWSAndPublishEvents+00000076
[ 42] 0x00007ffe6fde8e95 C:Program FilesMATLABR2022bbinwin64iqm.dll+00757397 iqm::InternalEvalPlugin::inEvalCmdWithLocalReturn+00000101
[ 43] 0x00007ffe6fde87f3 C:Program FilesMATLABR2022bbinwin64iqm.dll+00755699 iqm::InternalEvalPlugin::execute+00000243
[ 44] 0x00007ffe6fc021f0 C:Program FilesMATLABR2022bbinwin64mcr.dll+00401904 mcrInstantiationError::operator=+00082560
[ 45] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 46] 0x00007ffe6fda08ea C:Program FilesMATLABR2022bbinwin64iqm.dll+00461034 iqm::Iqm::create+00035450
[ 47] 0x00007ffe6fd3e2c3 C:Program FilesMATLABR2022bbinwin64iqm.dll+00058051 iqm::BaseIqmPlugin::processMFileError+00001539
[ 48] 0x00007ffe74c8ae3c C:Program FilesMATLABR2022bbinwin64mlutil.dll+03124796 cmddistributor::IIPRunNowMessage::deliver+00000028
[ 49] 0x00007ffe726b6f08 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01732360 foundation::msg_svc::exchange::MessageQueue::deliver+00000472
[ 50] 0x00007ffe726b892f C:Program FilesMATLABR2022bbinwin64libmwms.dll+01739055 foundation::msg_svc::exchange::MessageQueue::sendReply+00004047
[ 51] 0x00007ffe726a0750 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01640272 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00076544
[ 52] 0x00007ffe726aec07 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01698823 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00135095
[ 53] 0x00007ffe726ad326 C:Program FilesMATLABR2022bbinwin64libmwms.dll+01692454 foundation::msg_svc::exchange::CommunicationErrorEvent::getTransportID+00128726
[ 54] 0x00007ffe74af3ddd C:Program FilesMATLABR2022bbinwin64mlutil.dll+01457629 cmddistributor::IIP::EventMgrBypass::operator=+00048125
[ 55] 0x00007ffe74ac7ee2 C:Program FilesMATLABR2022bbinwin64mlutil.dll+01277666 cmddistributor::DebugLoopEvent::serializeExplicit+00023314
[ 56] 0x00007ffe77c53eac C:Program FilesMATLABR2022bbinwin64mvm.dll+00474796 mvm::MVM::setClientCapabilities+00010684
[ 57] 0x00007ffe6fbde45a C:Program FilesMATLABR2022bbinwin64mcr.dll+00255066 mwboost::archive::codecvt_null<wchar_t>::do_out+00003370
[ 58] 0x00007ffe6fbddcb2 C:Program FilesMATLABR2022bbinwin64mcr.dll+00253106 mwboost::archive::codecvt_null<wchar_t>::do_out+00001410
[ 59] 0x00007ffe6fbb87f3 C:Program FilesMATLABR2022bbinwin64mcr.dll+00100339 mcrFunctionSignature::set_signature+00080067
[ 60] 0x00007ffe6fbd6050 C:Program FilesMATLABR2022bbinwin64mcr.dll+00221264 mwboost::archive::codecvt_null<wchar_t>::`default constructor closure’+00017616
[ 61] 0x00007ffe6fdf525a C:Program FilesMATLABR2022bbinwin64iqm.dll+00807514 iqm::PackagedTaskPlugin::execute+00000074
[ 62] 0x00007ffe6fc02350 C:Program FilesMATLABR2022bbinwin64mcr.dll+00402256 mcrInstantiationError::operator=+00082912
[ 63] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 64] 0x00007ffe6fd99c12 C:Program FilesMATLABR2022bbinwin64iqm.dll+00433170 iqm::Iqm::create+00007586
[ 65] 0x00007ffe6f46311e C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00078110 ioReadLine+00000430
[ 66] 0x00007ffe6f462f35 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00077621 ioReadLine+00000165
[ 67] 0x00007ffe6f494a10 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00281104 mnGetCommandLineBuffer+00000288
[ 68] 0x00007ffe6f494ea2 C:Program FilesMATLABR2022bbinwin64libmwbridge.dll+00282274 mnParser+00000466
[ 69] 0x00007ffe6fc07c64 C:Program FilesMATLABR2022bbinwin64mcr.dll+00425060 mcr_set_enableReadingFromStdin+00013524
[ 70] 0x00007ffe6fbb87f3 C:Program FilesMATLABR2022bbinwin64mcr.dll+00100339 mcrFunctionSignature::set_signature+00080067
[ 71] 0x00007ffe6fbd6050 C:Program FilesMATLABR2022bbinwin64mcr.dll+00221264 mwboost::archive::codecvt_null<wchar_t>::`default constructor closure’+00017616
[ 72] 0x00007ffe6fdf525a C:Program FilesMATLABR2022bbinwin64iqm.dll+00807514 iqm::PackagedTaskPlugin::execute+00000074
[ 73] 0x00007ffe6fc02350 C:Program FilesMATLABR2022bbinwin64mcr.dll+00402256 mcrInstantiationError::operator=+00082912
[ 74] 0x00007ffe6fdc8a4c C:Program FilesMATLABR2022bbinwin64iqm.dll+00625228 iqm::Iqm::setupIqmFcnPtrs+00097324
[ 75] 0x00007ffe6fd9ade1 C:Program FilesMATLABR2022bbinwin64iqm.dll+00437729 iqm::Iqm::create+00012145
[ 76] 0x00007ffe6fd9a529 C:Program FilesMATLABR2022bbinwin64iqm.dll+00435497 iqm::Iqm::create+00009913
[ 77] 0x00007ffe6fbf06dc C:Program FilesMATLABR2022bbinwin64mcr.dll+00329436 mcrInstantiationError::operator=+00010092
[ 78] 0x00007ffe6fbf1105 C:Program FilesMATLABR2022bbinwin64mcr.dll+00332037 mcrInstantiationError::operator=+00012693
[ 79] 0x00007ffe6fbeea00 C:Program FilesMATLABR2022bbinwin64mcr.dll+00322048 mcrInstantiationError::operator=+00002704
[ 80] 0x00007ffe7ace855a C:Program FilesMATLABR2022bbinwin64mwboost_thread-vc142-mt-x64-1_75.dll+00034138 mwboost::thread::swap+00000074
[ 81] 0x00007ffea85e1bb2 C:WindowsSystem32ucrtbase.dll+00138162 configthreadlocale+00000146
[ 82] 0x00007ffea93d7344 C:WindowsSystem32KERNEL32.DLL+00095044 BaseThreadInitThunk+00000020
[ 83] 0x00007ffeaa7426b1 C:WindowsSYSTEM32ntdll.dll+00337585 RtlUserThreadStart+00000033 matlab MATLAB Answers — New Questions
how to create array datetime using numbers in a table
i want datetime in this format :
01/02/2008 501 (day/month/years and time)
i try it :
bbb=datetime(bb,"InputFormat", "dd/MM/yyyy");
but i get error formati want datetime in this format :
01/02/2008 501 (day/month/years and time)
i try it :
bbb=datetime(bb,"InputFormat", "dd/MM/yyyy");
but i get error format i want datetime in this format :
01/02/2008 501 (day/month/years and time)
i try it :
bbb=datetime(bb,"InputFormat", "dd/MM/yyyy");
but i get error format how to create arraydatetime using numbers in a tab MATLAB Answers — New Questions
d’unité Hounsfield (UH) faux
J’ai des images de scanner au format DICOM. Lorsque j’utilise MicroDicom pour les visualiser, je trouve une plage d’unité Hounsfield (UH) entre -1000 et 2000, ce qui est normal. mais lorsque j’utilise la fonction dicomread sur Matlab, je trouve des matrices contenant des valeurs entre 0 et 4000. S’il vous plaît j’ai besoin d’aideJ’ai des images de scanner au format DICOM. Lorsque j’utilise MicroDicom pour les visualiser, je trouve une plage d’unité Hounsfield (UH) entre -1000 et 2000, ce qui est normal. mais lorsque j’utilise la fonction dicomread sur Matlab, je trouve des matrices contenant des valeurs entre 0 et 4000. S’il vous plaît j’ai besoin d’aide J’ai des images de scanner au format DICOM. Lorsque j’utilise MicroDicom pour les visualiser, je trouve une plage d’unité Hounsfield (UH) entre -1000 et 2000, ce qui est normal. mais lorsque j’utilise la fonction dicomread sur Matlab, je trouve des matrices contenant des valeurs entre 0 et 4000. S’il vous plaît j’ai besoin d’aide uh, scanner, dicomread MATLAB Answers — New Questions
How to take the screenshots of two or more scopes of a single testcase while running the simulations?
Hello,
I’m running the simulations which shows the outputs in scopes. I could able to take the screenshots of the one scope using below commands
shh = get(0,’ShowHiddenHandles’); %finds the open figures
set(0,’ShowHiddenHandles’,’On’);
set(gcf,’PaperPositionMode’,’auto’); %gcf-current figure handle
set(gcf,’InvertHardcopy’,’off’);
saveas(gcf,sprintf(‘TC%d.png’,j));
set(0,’ShowHiddenHandles’,shh);
I could not able to take the screenshot of more than one scope of a single testcase. Here I’m using gcf command. Is there anyother command I have to use?
Any inputs highly appreciated!!
Thank you in advance!! :)Hello,
I’m running the simulations which shows the outputs in scopes. I could able to take the screenshots of the one scope using below commands
shh = get(0,’ShowHiddenHandles’); %finds the open figures
set(0,’ShowHiddenHandles’,’On’);
set(gcf,’PaperPositionMode’,’auto’); %gcf-current figure handle
set(gcf,’InvertHardcopy’,’off’);
saveas(gcf,sprintf(‘TC%d.png’,j));
set(0,’ShowHiddenHandles’,shh);
I could not able to take the screenshot of more than one scope of a single testcase. Here I’m using gcf command. Is there anyother command I have to use?
Any inputs highly appreciated!!
Thank you in advance!! 🙂 Hello,
I’m running the simulations which shows the outputs in scopes. I could able to take the screenshots of the one scope using below commands
shh = get(0,’ShowHiddenHandles’); %finds the open figures
set(0,’ShowHiddenHandles’,’On’);
set(gcf,’PaperPositionMode’,’auto’); %gcf-current figure handle
set(gcf,’InvertHardcopy’,’off’);
saveas(gcf,sprintf(‘TC%d.png’,j));
set(0,’ShowHiddenHandles’,shh);
I could not able to take the screenshot of more than one scope of a single testcase. Here I’m using gcf command. Is there anyother command I have to use?
Any inputs highly appreciated!!
Thank you in advance!! 🙂 matlab, simulation, simulink, script, screenshot MATLAB Answers — New Questions
Negative sign produced by “functionalDerivative” – why?
I am asking this question to both get some understanding, but to also provide a possible workaround to a problem that I have seen posted before with no solutions.
I have written some code to determine the equations of motion for a somewhat simple system (in preparation for the analysis of a much more complex system) and have noticed some odd behavior when using the "functionalDerivative" command and am curious is anyone has ideas on why the behavior detailed below occurs.
Background:
The Lagrangian is given by:
The constraint equations are given by:
I have already developed the EOM’s using the method of Lagrange multipliers, and would now like to develop them by simply substituting the constraint equations into the Lagrangian. Note however that is a function of time, therefore is a composite function:
Note that the generalized coordinate is acted on by a non-conservative generalized force, which I account for on the rhs of the equation of motion (line 20).
Initial Attempts
My initial attempts utilized the "diff" command to try and determine the generalized forces and momenta, however I got the following error message for the generalized force for :
"Error using symengine, First argument must not contain functionals"
This makes sense, as "diff" needs a symbolic variable, not a function. Since this failed, I decided to utilize the functionalDerivative command (which coincidently requires much less code and appears to be overall more efficient), as shown in the code below:
syms theta_c(t) theta_hc(t) z_h(t) I_eq I_h m_h k z_hi Q_c f(t)
%setting assumptions
assume(I_eq,’positive’);
assume(I_h,’positive’);
assume(m_h,’positive’);
assume(z_hi,’positive’);
assume(k,’positive’);
%constraint equations
theta_h=theta_c+theta_hc;
g=compose(f,theta_hc);
%Lagrangian
L=0.5*I_eq*diff(theta_c,t)^2+0.5*I_h*diff(theta_h,t)^2+0.5*m_h*diff(z_h,t)^2-0.5*k*(z_hi+z_h)^2;
%substitution
L=subs(L,z_h,g); %note that theta_h substitution occurs automatically
%Equations of Motion
EOM_theta_c=functionalDerivative(L,theta_c) == Q_c;
EOM_theta_hc=functionalDerivative(L,theta_hc) == 0;
%isolating accelerations
theta_c_2dot=isolate(EOM_theta_c,diff(theta_c,t,t));
theta_hc_2dot=isolate(EOM_theta_hc,diff(theta_hc,t,t));
Question
The resulting equations of motion were given by MATLAB as:
When applying the Euler-Lagrange equation by hand the equation for is correct, but the equation for has an incorrect sign for as it should be positive. Checking just the functional derivative gives:
test=functionalDerivative(L,theta_c)
test(t)=
I am confused as to why these terms have a negative sign, as according the standard form of the Euler-Lagrange equation these terms should have a positive sign. Now, in cases where the functional derivative is equal to zero (conservative systems) this negative sign has no bearing on the result as it can simply be divided out. However, as I have shown in my case (non-conservative) this negative sign does have a bearing on the result. Why is this negative sign added when the functional derivative is calculated?
Possible Fix
I have managed to mitigate this behavior by adjusting my code:
%Equations of Motion
EOM_theta_c=-functionalDerivative(L,theta_c) == Q_c;
EOM_theta_hc=-functionalDerivative(L,theta_hc) == 0;
My only worry when moving to a more complex system is if the behavior of the functionalDerivative command will be consistent as far as signs are considered.I am asking this question to both get some understanding, but to also provide a possible workaround to a problem that I have seen posted before with no solutions.
I have written some code to determine the equations of motion for a somewhat simple system (in preparation for the analysis of a much more complex system) and have noticed some odd behavior when using the "functionalDerivative" command and am curious is anyone has ideas on why the behavior detailed below occurs.
Background:
The Lagrangian is given by:
The constraint equations are given by:
I have already developed the EOM’s using the method of Lagrange multipliers, and would now like to develop them by simply substituting the constraint equations into the Lagrangian. Note however that is a function of time, therefore is a composite function:
Note that the generalized coordinate is acted on by a non-conservative generalized force, which I account for on the rhs of the equation of motion (line 20).
Initial Attempts
My initial attempts utilized the "diff" command to try and determine the generalized forces and momenta, however I got the following error message for the generalized force for :
"Error using symengine, First argument must not contain functionals"
This makes sense, as "diff" needs a symbolic variable, not a function. Since this failed, I decided to utilize the functionalDerivative command (which coincidently requires much less code and appears to be overall more efficient), as shown in the code below:
syms theta_c(t) theta_hc(t) z_h(t) I_eq I_h m_h k z_hi Q_c f(t)
%setting assumptions
assume(I_eq,’positive’);
assume(I_h,’positive’);
assume(m_h,’positive’);
assume(z_hi,’positive’);
assume(k,’positive’);
%constraint equations
theta_h=theta_c+theta_hc;
g=compose(f,theta_hc);
%Lagrangian
L=0.5*I_eq*diff(theta_c,t)^2+0.5*I_h*diff(theta_h,t)^2+0.5*m_h*diff(z_h,t)^2-0.5*k*(z_hi+z_h)^2;
%substitution
L=subs(L,z_h,g); %note that theta_h substitution occurs automatically
%Equations of Motion
EOM_theta_c=functionalDerivative(L,theta_c) == Q_c;
EOM_theta_hc=functionalDerivative(L,theta_hc) == 0;
%isolating accelerations
theta_c_2dot=isolate(EOM_theta_c,diff(theta_c,t,t));
theta_hc_2dot=isolate(EOM_theta_hc,diff(theta_hc,t,t));
Question
The resulting equations of motion were given by MATLAB as:
When applying the Euler-Lagrange equation by hand the equation for is correct, but the equation for has an incorrect sign for as it should be positive. Checking just the functional derivative gives:
test=functionalDerivative(L,theta_c)
test(t)=
I am confused as to why these terms have a negative sign, as according the standard form of the Euler-Lagrange equation these terms should have a positive sign. Now, in cases where the functional derivative is equal to zero (conservative systems) this negative sign has no bearing on the result as it can simply be divided out. However, as I have shown in my case (non-conservative) this negative sign does have a bearing on the result. Why is this negative sign added when the functional derivative is calculated?
Possible Fix
I have managed to mitigate this behavior by adjusting my code:
%Equations of Motion
EOM_theta_c=-functionalDerivative(L,theta_c) == Q_c;
EOM_theta_hc=-functionalDerivative(L,theta_hc) == 0;
My only worry when moving to a more complex system is if the behavior of the functionalDerivative command will be consistent as far as signs are considered. I am asking this question to both get some understanding, but to also provide a possible workaround to a problem that I have seen posted before with no solutions.
I have written some code to determine the equations of motion for a somewhat simple system (in preparation for the analysis of a much more complex system) and have noticed some odd behavior when using the "functionalDerivative" command and am curious is anyone has ideas on why the behavior detailed below occurs.
Background:
The Lagrangian is given by:
The constraint equations are given by:
I have already developed the EOM’s using the method of Lagrange multipliers, and would now like to develop them by simply substituting the constraint equations into the Lagrangian. Note however that is a function of time, therefore is a composite function:
Note that the generalized coordinate is acted on by a non-conservative generalized force, which I account for on the rhs of the equation of motion (line 20).
Initial Attempts
My initial attempts utilized the "diff" command to try and determine the generalized forces and momenta, however I got the following error message for the generalized force for :
"Error using symengine, First argument must not contain functionals"
This makes sense, as "diff" needs a symbolic variable, not a function. Since this failed, I decided to utilize the functionalDerivative command (which coincidently requires much less code and appears to be overall more efficient), as shown in the code below:
syms theta_c(t) theta_hc(t) z_h(t) I_eq I_h m_h k z_hi Q_c f(t)
%setting assumptions
assume(I_eq,’positive’);
assume(I_h,’positive’);
assume(m_h,’positive’);
assume(z_hi,’positive’);
assume(k,’positive’);
%constraint equations
theta_h=theta_c+theta_hc;
g=compose(f,theta_hc);
%Lagrangian
L=0.5*I_eq*diff(theta_c,t)^2+0.5*I_h*diff(theta_h,t)^2+0.5*m_h*diff(z_h,t)^2-0.5*k*(z_hi+z_h)^2;
%substitution
L=subs(L,z_h,g); %note that theta_h substitution occurs automatically
%Equations of Motion
EOM_theta_c=functionalDerivative(L,theta_c) == Q_c;
EOM_theta_hc=functionalDerivative(L,theta_hc) == 0;
%isolating accelerations
theta_c_2dot=isolate(EOM_theta_c,diff(theta_c,t,t));
theta_hc_2dot=isolate(EOM_theta_hc,diff(theta_hc,t,t));
Question
The resulting equations of motion were given by MATLAB as:
When applying the Euler-Lagrange equation by hand the equation for is correct, but the equation for has an incorrect sign for as it should be positive. Checking just the functional derivative gives:
test=functionalDerivative(L,theta_c)
test(t)=
I am confused as to why these terms have a negative sign, as according the standard form of the Euler-Lagrange equation these terms should have a positive sign. Now, in cases where the functional derivative is equal to zero (conservative systems) this negative sign has no bearing on the result as it can simply be divided out. However, as I have shown in my case (non-conservative) this negative sign does have a bearing on the result. Why is this negative sign added when the functional derivative is calculated?
Possible Fix
I have managed to mitigate this behavior by adjusting my code:
%Equations of Motion
EOM_theta_c=-functionalDerivative(L,theta_c) == Q_c;
EOM_theta_hc=-functionalDerivative(L,theta_hc) == 0;
My only worry when moving to a more complex system is if the behavior of the functionalDerivative command will be consistent as far as signs are considered. lagrangian, functional derivative, composite functions MATLAB Answers — New Questions
in System identification, if input is PWM signal….
Hello !
i’m using System identification toolbox.
i already got step response from RC servo motor.
the problem is input signal type is PWM.
i gave step siganl throught PWM (1 ms to 2ms ).
how i can identify this 1ms to 2ms PWM signal for using system identification toolbox ?Hello !
i’m using System identification toolbox.
i already got step response from RC servo motor.
the problem is input signal type is PWM.
i gave step siganl throught PWM (1 ms to 2ms ).
how i can identify this 1ms to 2ms PWM signal for using system identification toolbox ? Hello !
i’m using System identification toolbox.
i already got step response from RC servo motor.
the problem is input signal type is PWM.
i gave step siganl throught PWM (1 ms to 2ms ).
how i can identify this 1ms to 2ms PWM signal for using system identification toolbox ? system identification, pwm, power_electronics_control, electric_motor_control, power_conversion_control MATLAB Answers — New Questions
SHINE Toolbox mssim Error
Hello,
When I use luminance match code in SHINE Toolbox, I get ssim error which I write below. Whan can I do to fix error?
Output argument "mssim" (and possibly others) not assigned a value in the execution with "ssim_index" function.
Error in SHINE (line 400)
mssim = ssim_index(images_orig{im},images{im});Hello,
When I use luminance match code in SHINE Toolbox, I get ssim error which I write below. Whan can I do to fix error?
Output argument "mssim" (and possibly others) not assigned a value in the execution with "ssim_index" function.
Error in SHINE (line 400)
mssim = ssim_index(images_orig{im},images{im}); Hello,
When I use luminance match code in SHINE Toolbox, I get ssim error which I write below. Whan can I do to fix error?
Output argument "mssim" (and possibly others) not assigned a value in the execution with "ssim_index" function.
Error in SHINE (line 400)
mssim = ssim_index(images_orig{im},images{im}); shine, shinetoolbox, ssim, mssim, ssim_index, luminance, luminancematch MATLAB Answers — New Questions
Unable to generate RLAgent
Hi,
I am new to Reinforcement Learning Toolbox and its utilities. I have created a continuous Observation and Action Environment basis my requirements.
%% Code for Setting up Environment
% Author : Srivatsank P
% Created : 05/12/2024
% Edited : 05/13/2024
clear;
clc;
%% Setup Dynamics
% learned dynamics
model_path = ‘doubleInt2D_net_longtime.mat’;
% Load neural dynamics
load(model_path);
nnet = FCNReLUDyns([6, 5, 5, 4], ‘state_idx’, 1:4, ‘control_idx’, 5:6);
nnet = nnet.load_model_from_SeriesNetwork(net);
% Load black box agent
A = doubleInt2D_NN(nnet);
%% Create RL Environment
% States
ObservationInfo = rlNumericSpec([8 1]);
ObservationInfo.Name = ‘DoubleInt2D_States’;
ObservationInfo.Description = ‘x,y,xdot,ydot,x_goal,y_goal,xdot_goal,ydot_goal’;
ObservationInfo.LowerLimit = [A.min_x;A.min_x];
ObservationInfo.UpperLimit = [A.max_x;A.max_x];
% Control Variables
ActionInfo = rlNumericSpec([2 1]);
ActionInfo.Name = ‘DoubleInt2D_Control’;
ActionInfo.Description = ‘u1,u2’;
ActionInfo.LowerLimit = A.min_u;
ActionInfo.UpperLimit = A.max_u;
% Functions that define Initialization and Reward Calculation
reset_handle = @() reset_dynamics(A);
reward_handle = @(Action,LoggedSignals) dynamics_and_reward(Action,LoggedSignals,A);
%Environment
doubleInt2D_env = rlFunctionEnv(ObservationInfo,ActionInfo,reward_handle,reset_handle);
doubleInt2D_NN is an equivalent NN model I am using for the dynamics, the details of which I can’t share unfortunately.
After this, I tried using "Reinforcement Learning Designer" to generate an agent. Agent details are shown below:
I run into the following error on my console:
Warning: Error occurred while executing the listener callback for event ButtonPushed defined for class matlab.ui.control.Button:
Error using dlnetwork/connectLayers (line 250)
Dot indexing is not supported for variables of this type.
Error in rl.util.default.createSingleChannelOutNet (line 12)
Net = connectLayers(Net,BridgeOutputName,OutputLayerName);
Error in rl.function.rlContinuousDeterministicActor.createDefault (line 200)
[actorNet,actionLayerName] = rl.util.default.createSingleChannelOutNet(inputGraph,bridgeOutputName,numOutput);
Error in rlTD3Agent (line 99)
Actor = rl.function.rlContinuousDeterministicActor.createDefault(ObservationInfo, ActionInfo, InitOptions);
Error in rl.util.createAgentFactory (line 16)
Agent = rlTD3Agent(Oinfo,Ainfo,AgentInitOpts);
Error in rl.util.createAgentFromEnvFactory (line 11)
Agent = rl.util.createAgentFactory(Type,Oinfo,Ainfo,AgentInitOpts);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog/createAgent (line 297)
Agent = rl.util.createAgentFromEnvFactory(AgentType,Env,AgentInitOpts);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog/callbackOK (line 274)
Agent = createAgent(obj);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog>@(es,ed)callbackOK(obj) (line 183)
addlistener(obj.OKButton,’ButtonPushed’,@(es,ed) callbackOK(obj));
Error in appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282)
notify(obj, matlabEventName, matlabEventData);
Error in matlab.ui.control.internal.controller.ComponentController/handleUserInteraction (line 442)
obj.Model.executeUserCallback(callbackInfo{:});
Error in matlab.ui.control.internal.controller.PushButtonController/handleEvent (line 95)
obj.handleUserInteraction(‘ButtonPushed’, event.Data, {‘ButtonPushed’, eventData});
Error in appdesservices.internal.interfaces.controller.AbstractController>@(varargin)obj.handleEvent(varargin{:}) (line 214)
obj.Listeners = addlistener(obj.ViewModel, ‘peerEvent’, @obj.handleEvent);
Error in
viewmodel.internal.factory.ManagerFactoryProducer>@(src,event)callback(src,viewmodel.internal.factory.ManagerFactoryProducer.convertStructToEventData(event))
(line 79)
proxyCallback = @(src, event)callback(src, …
> In appdesservices.internal.interfaces.model/AbstractModel/executeUserCallback (line 282)
In matlab.ui.control.internal.controller/ComponentController/handleUserInteraction (line 442)
In matlab.ui.control.internal.controller/PushButtonController/handleEvent (line 95)
In appdesservices.internal.interfaces.controller.AbstractController>@(varargin)obj.handleEvent(varargin{:}) (line 214)
In viewmodel.internal.factory.ManagerFactoryProducer>@(src,event)callback(src,viewmodel.internal.factory.ManagerFactoryProducer.convertStructToEventData(event)) (line 79)
>>
I run into the same error even with the default provided environments. I am currently on R2024a and have tried the same on Linux(ubuntu) and Windows 11. I do not know how to proceed and am unable to create agents. TIA for help!Hi,
I am new to Reinforcement Learning Toolbox and its utilities. I have created a continuous Observation and Action Environment basis my requirements.
%% Code for Setting up Environment
% Author : Srivatsank P
% Created : 05/12/2024
% Edited : 05/13/2024
clear;
clc;
%% Setup Dynamics
% learned dynamics
model_path = ‘doubleInt2D_net_longtime.mat’;
% Load neural dynamics
load(model_path);
nnet = FCNReLUDyns([6, 5, 5, 4], ‘state_idx’, 1:4, ‘control_idx’, 5:6);
nnet = nnet.load_model_from_SeriesNetwork(net);
% Load black box agent
A = doubleInt2D_NN(nnet);
%% Create RL Environment
% States
ObservationInfo = rlNumericSpec([8 1]);
ObservationInfo.Name = ‘DoubleInt2D_States’;
ObservationInfo.Description = ‘x,y,xdot,ydot,x_goal,y_goal,xdot_goal,ydot_goal’;
ObservationInfo.LowerLimit = [A.min_x;A.min_x];
ObservationInfo.UpperLimit = [A.max_x;A.max_x];
% Control Variables
ActionInfo = rlNumericSpec([2 1]);
ActionInfo.Name = ‘DoubleInt2D_Control’;
ActionInfo.Description = ‘u1,u2’;
ActionInfo.LowerLimit = A.min_u;
ActionInfo.UpperLimit = A.max_u;
% Functions that define Initialization and Reward Calculation
reset_handle = @() reset_dynamics(A);
reward_handle = @(Action,LoggedSignals) dynamics_and_reward(Action,LoggedSignals,A);
%Environment
doubleInt2D_env = rlFunctionEnv(ObservationInfo,ActionInfo,reward_handle,reset_handle);
doubleInt2D_NN is an equivalent NN model I am using for the dynamics, the details of which I can’t share unfortunately.
After this, I tried using "Reinforcement Learning Designer" to generate an agent. Agent details are shown below:
I run into the following error on my console:
Warning: Error occurred while executing the listener callback for event ButtonPushed defined for class matlab.ui.control.Button:
Error using dlnetwork/connectLayers (line 250)
Dot indexing is not supported for variables of this type.
Error in rl.util.default.createSingleChannelOutNet (line 12)
Net = connectLayers(Net,BridgeOutputName,OutputLayerName);
Error in rl.function.rlContinuousDeterministicActor.createDefault (line 200)
[actorNet,actionLayerName] = rl.util.default.createSingleChannelOutNet(inputGraph,bridgeOutputName,numOutput);
Error in rlTD3Agent (line 99)
Actor = rl.function.rlContinuousDeterministicActor.createDefault(ObservationInfo, ActionInfo, InitOptions);
Error in rl.util.createAgentFactory (line 16)
Agent = rlTD3Agent(Oinfo,Ainfo,AgentInitOpts);
Error in rl.util.createAgentFromEnvFactory (line 11)
Agent = rl.util.createAgentFactory(Type,Oinfo,Ainfo,AgentInitOpts);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog/createAgent (line 297)
Agent = rl.util.createAgentFromEnvFactory(AgentType,Env,AgentInitOpts);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog/callbackOK (line 274)
Agent = createAgent(obj);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog>@(es,ed)callbackOK(obj) (line 183)
addlistener(obj.OKButton,’ButtonPushed’,@(es,ed) callbackOK(obj));
Error in appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282)
notify(obj, matlabEventName, matlabEventData);
Error in matlab.ui.control.internal.controller.ComponentController/handleUserInteraction (line 442)
obj.Model.executeUserCallback(callbackInfo{:});
Error in matlab.ui.control.internal.controller.PushButtonController/handleEvent (line 95)
obj.handleUserInteraction(‘ButtonPushed’, event.Data, {‘ButtonPushed’, eventData});
Error in appdesservices.internal.interfaces.controller.AbstractController>@(varargin)obj.handleEvent(varargin{:}) (line 214)
obj.Listeners = addlistener(obj.ViewModel, ‘peerEvent’, @obj.handleEvent);
Error in
viewmodel.internal.factory.ManagerFactoryProducer>@(src,event)callback(src,viewmodel.internal.factory.ManagerFactoryProducer.convertStructToEventData(event))
(line 79)
proxyCallback = @(src, event)callback(src, …
> In appdesservices.internal.interfaces.model/AbstractModel/executeUserCallback (line 282)
In matlab.ui.control.internal.controller/ComponentController/handleUserInteraction (line 442)
In matlab.ui.control.internal.controller/PushButtonController/handleEvent (line 95)
In appdesservices.internal.interfaces.controller.AbstractController>@(varargin)obj.handleEvent(varargin{:}) (line 214)
In viewmodel.internal.factory.ManagerFactoryProducer>@(src,event)callback(src,viewmodel.internal.factory.ManagerFactoryProducer.convertStructToEventData(event)) (line 79)
>>
I run into the same error even with the default provided environments. I am currently on R2024a and have tried the same on Linux(ubuntu) and Windows 11. I do not know how to proceed and am unable to create agents. TIA for help! Hi,
I am new to Reinforcement Learning Toolbox and its utilities. I have created a continuous Observation and Action Environment basis my requirements.
%% Code for Setting up Environment
% Author : Srivatsank P
% Created : 05/12/2024
% Edited : 05/13/2024
clear;
clc;
%% Setup Dynamics
% learned dynamics
model_path = ‘doubleInt2D_net_longtime.mat’;
% Load neural dynamics
load(model_path);
nnet = FCNReLUDyns([6, 5, 5, 4], ‘state_idx’, 1:4, ‘control_idx’, 5:6);
nnet = nnet.load_model_from_SeriesNetwork(net);
% Load black box agent
A = doubleInt2D_NN(nnet);
%% Create RL Environment
% States
ObservationInfo = rlNumericSpec([8 1]);
ObservationInfo.Name = ‘DoubleInt2D_States’;
ObservationInfo.Description = ‘x,y,xdot,ydot,x_goal,y_goal,xdot_goal,ydot_goal’;
ObservationInfo.LowerLimit = [A.min_x;A.min_x];
ObservationInfo.UpperLimit = [A.max_x;A.max_x];
% Control Variables
ActionInfo = rlNumericSpec([2 1]);
ActionInfo.Name = ‘DoubleInt2D_Control’;
ActionInfo.Description = ‘u1,u2’;
ActionInfo.LowerLimit = A.min_u;
ActionInfo.UpperLimit = A.max_u;
% Functions that define Initialization and Reward Calculation
reset_handle = @() reset_dynamics(A);
reward_handle = @(Action,LoggedSignals) dynamics_and_reward(Action,LoggedSignals,A);
%Environment
doubleInt2D_env = rlFunctionEnv(ObservationInfo,ActionInfo,reward_handle,reset_handle);
doubleInt2D_NN is an equivalent NN model I am using for the dynamics, the details of which I can’t share unfortunately.
After this, I tried using "Reinforcement Learning Designer" to generate an agent. Agent details are shown below:
I run into the following error on my console:
Warning: Error occurred while executing the listener callback for event ButtonPushed defined for class matlab.ui.control.Button:
Error using dlnetwork/connectLayers (line 250)
Dot indexing is not supported for variables of this type.
Error in rl.util.default.createSingleChannelOutNet (line 12)
Net = connectLayers(Net,BridgeOutputName,OutputLayerName);
Error in rl.function.rlContinuousDeterministicActor.createDefault (line 200)
[actorNet,actionLayerName] = rl.util.default.createSingleChannelOutNet(inputGraph,bridgeOutputName,numOutput);
Error in rlTD3Agent (line 99)
Actor = rl.function.rlContinuousDeterministicActor.createDefault(ObservationInfo, ActionInfo, InitOptions);
Error in rl.util.createAgentFactory (line 16)
Agent = rlTD3Agent(Oinfo,Ainfo,AgentInitOpts);
Error in rl.util.createAgentFromEnvFactory (line 11)
Agent = rl.util.createAgentFactory(Type,Oinfo,Ainfo,AgentInitOpts);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog/createAgent (line 297)
Agent = rl.util.createAgentFromEnvFactory(AgentType,Env,AgentInitOpts);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog/callbackOK (line 274)
Agent = createAgent(obj);
Error in rl.internal.app.dialog.NewAgentFromEnvironmentDialog>@(es,ed)callbackOK(obj) (line 183)
addlistener(obj.OKButton,’ButtonPushed’,@(es,ed) callbackOK(obj));
Error in appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282)
notify(obj, matlabEventName, matlabEventData);
Error in matlab.ui.control.internal.controller.ComponentController/handleUserInteraction (line 442)
obj.Model.executeUserCallback(callbackInfo{:});
Error in matlab.ui.control.internal.controller.PushButtonController/handleEvent (line 95)
obj.handleUserInteraction(‘ButtonPushed’, event.Data, {‘ButtonPushed’, eventData});
Error in appdesservices.internal.interfaces.controller.AbstractController>@(varargin)obj.handleEvent(varargin{:}) (line 214)
obj.Listeners = addlistener(obj.ViewModel, ‘peerEvent’, @obj.handleEvent);
Error in
viewmodel.internal.factory.ManagerFactoryProducer>@(src,event)callback(src,viewmodel.internal.factory.ManagerFactoryProducer.convertStructToEventData(event))
(line 79)
proxyCallback = @(src, event)callback(src, …
> In appdesservices.internal.interfaces.model/AbstractModel/executeUserCallback (line 282)
In matlab.ui.control.internal.controller/ComponentController/handleUserInteraction (line 442)
In matlab.ui.control.internal.controller/PushButtonController/handleEvent (line 95)
In appdesservices.internal.interfaces.controller.AbstractController>@(varargin)obj.handleEvent(varargin{:}) (line 214)
In viewmodel.internal.factory.ManagerFactoryProducer>@(src,event)callback(src,viewmodel.internal.factory.ManagerFactoryProducer.convertStructToEventData(event)) (line 79)
>>
I run into the same error even with the default provided environments. I am currently on R2024a and have tried the same on Linux(ubuntu) and Windows 11. I do not know how to proceed and am unable to create agents. TIA for help! reinforcement learning MATLAB Answers — New Questions
How to copy-paste heading and its content in MS word from Matlab?
Hi everyone, I’m working on a Matlab code that allows to write a report in MS word as follows (the following code has been written taking as reference Office VBA Reference and AI tools):
clc; clear all; close all;
% Create a new Word document from the template
word = actxserver(‘Word.Application’); % it’s a Matlab function
word.visible=1;
doc = word.Documents.Add(tmpl_path);
headings = doc.GetCrossReferenceItems(1) % here I get all the headings of my .docx
% Find the index of the heading you want to copy
heading_index = find(strcmp(headings, ‘ 2.1 TR-x-xxx’));
% Get the range of the heading and its content
start_range = doc.Paragraphs.Item(heading_index).Range.Start;
end_range = doc.Paragraphs.Item(heading_index + 1).Range.End; % End of the next paragraph after the heading
content_range = doc.Range(start_range, end_range);
% Copy the content
content_range.Copy;
Now I would like to copy an heading (TR-x-xxx) and its content (see the following image)
it follows as I would do in MS word if I didn’t used Matlab:
Once selcted and copied, I would like to get the following result (I would like to be able to copy-paste and get as many headings+content as I want):
Is my code right? How do i proceed??Hi everyone, I’m working on a Matlab code that allows to write a report in MS word as follows (the following code has been written taking as reference Office VBA Reference and AI tools):
clc; clear all; close all;
% Create a new Word document from the template
word = actxserver(‘Word.Application’); % it’s a Matlab function
word.visible=1;
doc = word.Documents.Add(tmpl_path);
headings = doc.GetCrossReferenceItems(1) % here I get all the headings of my .docx
% Find the index of the heading you want to copy
heading_index = find(strcmp(headings, ‘ 2.1 TR-x-xxx’));
% Get the range of the heading and its content
start_range = doc.Paragraphs.Item(heading_index).Range.Start;
end_range = doc.Paragraphs.Item(heading_index + 1).Range.End; % End of the next paragraph after the heading
content_range = doc.Range(start_range, end_range);
% Copy the content
content_range.Copy;
Now I would like to copy an heading (TR-x-xxx) and its content (see the following image)
it follows as I would do in MS word if I didn’t used Matlab:
Once selcted and copied, I would like to get the following result (I would like to be able to copy-paste and get as many headings+content as I want):
Is my code right? How do i proceed?? Hi everyone, I’m working on a Matlab code that allows to write a report in MS word as follows (the following code has been written taking as reference Office VBA Reference and AI tools):
clc; clear all; close all;
% Create a new Word document from the template
word = actxserver(‘Word.Application’); % it’s a Matlab function
word.visible=1;
doc = word.Documents.Add(tmpl_path);
headings = doc.GetCrossReferenceItems(1) % here I get all the headings of my .docx
% Find the index of the heading you want to copy
heading_index = find(strcmp(headings, ‘ 2.1 TR-x-xxx’));
% Get the range of the heading and its content
start_range = doc.Paragraphs.Item(heading_index).Range.Start;
end_range = doc.Paragraphs.Item(heading_index + 1).Range.End; % End of the next paragraph after the heading
content_range = doc.Range(start_range, end_range);
% Copy the content
content_range.Copy;
Now I would like to copy an heading (TR-x-xxx) and its content (see the following image)
it follows as I would do in MS word if I didn’t used Matlab:
Once selcted and copied, I would like to get the following result (I would like to be able to copy-paste and get as many headings+content as I want):
Is my code right? How do i proceed?? actxserver, word, vba MATLAB Answers — New Questions
Better “probabilities”?
I created a small script in which I present two random colors to the user. See attached script.
As you can see, on the left, are the two RGB colors calculated using "rand" function. On the left is the colors plotted on an CIE ab diagram. I intend to use this script with my students to discuss "Color Harmonies". This is a "diad". Next up, is a "trad".
First question
What I’d like to know is how "effective" is the rand function? Would there be more "advanced" ways of coming up with those two colors?
The motivation behind this script is to get the students thinking "outside of the box", to move them away from getting "inspiration" from all kinds of "real-world" objects and only look at the "sensation" produced b the colors.
Second question
I would like to explore generating random colors from my Munsell Book of Color 1600 measured CIE Lab colors. This is how I bring in my Munsell color data from an Excel file:
% Import TAB-delimited file
file_path = ‘Munsell Glossy All Colors Extracted (2024 03 21) TAB.txt’;
my_table = readtable(file_path, ‘Delimiter’, ‘t’, ‘ReadVariableNames’, false);
MunsellNotationTMP = my_table{:, 1}; % Text data
MunsellNotation = string(MunsellNotationTMP);
HVCcolumns_Lab = my_table{:, 2:4}; % Numeric data
HVC_Lab = [HVCcolumns_Lab(:, 1), HVCcolumns_Lab(:, 2), HVCcolumns_Lab(:, 3)];I created a small script in which I present two random colors to the user. See attached script.
As you can see, on the left, are the two RGB colors calculated using "rand" function. On the left is the colors plotted on an CIE ab diagram. I intend to use this script with my students to discuss "Color Harmonies". This is a "diad". Next up, is a "trad".
First question
What I’d like to know is how "effective" is the rand function? Would there be more "advanced" ways of coming up with those two colors?
The motivation behind this script is to get the students thinking "outside of the box", to move them away from getting "inspiration" from all kinds of "real-world" objects and only look at the "sensation" produced b the colors.
Second question
I would like to explore generating random colors from my Munsell Book of Color 1600 measured CIE Lab colors. This is how I bring in my Munsell color data from an Excel file:
% Import TAB-delimited file
file_path = ‘Munsell Glossy All Colors Extracted (2024 03 21) TAB.txt’;
my_table = readtable(file_path, ‘Delimiter’, ‘t’, ‘ReadVariableNames’, false);
MunsellNotationTMP = my_table{:, 1}; % Text data
MunsellNotation = string(MunsellNotationTMP);
HVCcolumns_Lab = my_table{:, 2:4}; % Numeric data
HVC_Lab = [HVCcolumns_Lab(:, 1), HVCcolumns_Lab(:, 2), HVCcolumns_Lab(:, 3)]; I created a small script in which I present two random colors to the user. See attached script.
As you can see, on the left, are the two RGB colors calculated using "rand" function. On the left is the colors plotted on an CIE ab diagram. I intend to use this script with my students to discuss "Color Harmonies". This is a "diad". Next up, is a "trad".
First question
What I’d like to know is how "effective" is the rand function? Would there be more "advanced" ways of coming up with those two colors?
The motivation behind this script is to get the students thinking "outside of the box", to move them away from getting "inspiration" from all kinds of "real-world" objects and only look at the "sensation" produced b the colors.
Second question
I would like to explore generating random colors from my Munsell Book of Color 1600 measured CIE Lab colors. This is how I bring in my Munsell color data from an Excel file:
% Import TAB-delimited file
file_path = ‘Munsell Glossy All Colors Extracted (2024 03 21) TAB.txt’;
my_table = readtable(file_path, ‘Delimiter’, ‘t’, ‘ReadVariableNames’, false);
MunsellNotationTMP = my_table{:, 1}; % Text data
MunsellNotation = string(MunsellNotationTMP);
HVCcolumns_Lab = my_table{:, 2:4}; % Numeric data
HVC_Lab = [HVCcolumns_Lab(:, 1), HVCcolumns_Lab(:, 2), HVCcolumns_Lab(:, 3)]; random, munsell MATLAB Answers — New Questions
fmincon get the wrong answer
i have a optimization problem that fmincon get the wrong answer, there are a demand power(2) that can be generate or buy with different price, the codes are as follow:
a = 0.005;
b = 6;
c = 100;
% Define the cost function for generating energy (quadratic cost function) for the current microgrid
Cg_i = @(Ec, a, b, c) a * Ec^2 + b * Ec + c;
% Given prices
prices = [33, 26];
mprice = 27; % Given value of mprice
% Define the cost function for buying energy
Cb_i = @(Ec, price) price * Ec;
% Given total energy constraint
Ec_total = 2; % Given value of Ec_total
% Define the objective function
objective = @(X) Cg_i(X(1), a, b, c) + Cb_i(X(2), prices(1)) + Cb_i(X(3), prices(2)) + Cb_i(X(4), mprice);
% Initial guess for Ec_g, Ec1, Ec2
initial_guess = [Ec_total / 3, Ec_total / 3, Ec_total / 3, Ec_total / 3];
% initial_guess = [0, 0, Ec_total, 0];
% Linear equality constraint for the sum of Ec_g, Ec1, Ec2
Aeq = [1, 1, 1, 1];
beq = Ec_total;
% Options for fmincon
options = optimoptions(‘fmincon’, ‘Display’, ‘iter’);
% Define solver options
% Call fmincon with specified options
X = fmincon(objective, initial_guess, [], [], Aeq, beq, [0, 0, 0,0], [], [], options)
the matlab answer is X=[2 0 0 0]; that means generat 2 and no buy, that obviously is wrong because cost of buy with price 26 is 26*2=52 while generating cost is 112!i have a optimization problem that fmincon get the wrong answer, there are a demand power(2) that can be generate or buy with different price, the codes are as follow:
a = 0.005;
b = 6;
c = 100;
% Define the cost function for generating energy (quadratic cost function) for the current microgrid
Cg_i = @(Ec, a, b, c) a * Ec^2 + b * Ec + c;
% Given prices
prices = [33, 26];
mprice = 27; % Given value of mprice
% Define the cost function for buying energy
Cb_i = @(Ec, price) price * Ec;
% Given total energy constraint
Ec_total = 2; % Given value of Ec_total
% Define the objective function
objective = @(X) Cg_i(X(1), a, b, c) + Cb_i(X(2), prices(1)) + Cb_i(X(3), prices(2)) + Cb_i(X(4), mprice);
% Initial guess for Ec_g, Ec1, Ec2
initial_guess = [Ec_total / 3, Ec_total / 3, Ec_total / 3, Ec_total / 3];
% initial_guess = [0, 0, Ec_total, 0];
% Linear equality constraint for the sum of Ec_g, Ec1, Ec2
Aeq = [1, 1, 1, 1];
beq = Ec_total;
% Options for fmincon
options = optimoptions(‘fmincon’, ‘Display’, ‘iter’);
% Define solver options
% Call fmincon with specified options
X = fmincon(objective, initial_guess, [], [], Aeq, beq, [0, 0, 0,0], [], [], options)
the matlab answer is X=[2 0 0 0]; that means generat 2 and no buy, that obviously is wrong because cost of buy with price 26 is 26*2=52 while generating cost is 112! i have a optimization problem that fmincon get the wrong answer, there are a demand power(2) that can be generate or buy with different price, the codes are as follow:
a = 0.005;
b = 6;
c = 100;
% Define the cost function for generating energy (quadratic cost function) for the current microgrid
Cg_i = @(Ec, a, b, c) a * Ec^2 + b * Ec + c;
% Given prices
prices = [33, 26];
mprice = 27; % Given value of mprice
% Define the cost function for buying energy
Cb_i = @(Ec, price) price * Ec;
% Given total energy constraint
Ec_total = 2; % Given value of Ec_total
% Define the objective function
objective = @(X) Cg_i(X(1), a, b, c) + Cb_i(X(2), prices(1)) + Cb_i(X(3), prices(2)) + Cb_i(X(4), mprice);
% Initial guess for Ec_g, Ec1, Ec2
initial_guess = [Ec_total / 3, Ec_total / 3, Ec_total / 3, Ec_total / 3];
% initial_guess = [0, 0, Ec_total, 0];
% Linear equality constraint for the sum of Ec_g, Ec1, Ec2
Aeq = [1, 1, 1, 1];
beq = Ec_total;
% Options for fmincon
options = optimoptions(‘fmincon’, ‘Display’, ‘iter’);
% Define solver options
% Call fmincon with specified options
X = fmincon(objective, initial_guess, [], [], Aeq, beq, [0, 0, 0,0], [], [], options)
the matlab answer is X=[2 0 0 0]; that means generat 2 and no buy, that obviously is wrong because cost of buy with price 26 is 26*2=52 while generating cost is 112! fmincon MATLAB Answers — New Questions
I WANT ANSWER FOR THIS DIVIDED DIFFEENCE PROBLEM.
#include<stdio.h> #include<conio.h> void main() { int x[10], y[10], p[10]; int k,f,n,i,j=1,f1=1,f2=0; printf("nEnter the number of observations:n"); scanf("%d", &n); printf("nEnter the different values of x:n"); for (i=1;i<=n;i++) scanf("%d", &x[i]); printf("nThe corresponding values of y are:n"); for (i=1;i<=n;i++) scanf("%d", &y[i]); f=y[1]; printf("nEnter the value of ‘k’ in f(k) you want to evaluate:n"); scanf("%d", &k); do { for (i=1;i<=n-1;i++) { p[i] = ((y[i+1]-y[i])/(x[i+j]-x[i])); y[i]=p[i]; } f1=1; for(i=1;i<=j;i++) { f1*=(k-x[i]); } f2+=(y[1]*f1); n–; j++; } while(n!=1); f+=f2; printf("nf(%d) = %d", k , f); getch();#include<stdio.h> #include<conio.h> void main() { int x[10], y[10], p[10]; int k,f,n,i,j=1,f1=1,f2=0; printf("nEnter the number of observations:n"); scanf("%d", &n); printf("nEnter the different values of x:n"); for (i=1;i<=n;i++) scanf("%d", &x[i]); printf("nThe corresponding values of y are:n"); for (i=1;i<=n;i++) scanf("%d", &y[i]); f=y[1]; printf("nEnter the value of ‘k’ in f(k) you want to evaluate:n"); scanf("%d", &k); do { for (i=1;i<=n-1;i++) { p[i] = ((y[i+1]-y[i])/(x[i+j]-x[i])); y[i]=p[i]; } f1=1; for(i=1;i<=j;i++) { f1*=(k-x[i]); } f2+=(y[1]*f1); n–; j++; } while(n!=1); f+=f2; printf("nf(%d) = %d", k , f); getch(); #include<stdio.h> #include<conio.h> void main() { int x[10], y[10], p[10]; int k,f,n,i,j=1,f1=1,f2=0; printf("nEnter the number of observations:n"); scanf("%d", &n); printf("nEnter the different values of x:n"); for (i=1;i<=n;i++) scanf("%d", &x[i]); printf("nThe corresponding values of y are:n"); for (i=1;i<=n;i++) scanf("%d", &y[i]); f=y[1]; printf("nEnter the value of ‘k’ in f(k) you want to evaluate:n"); scanf("%d", &k); do { for (i=1;i<=n-1;i++) { p[i] = ((y[i+1]-y[i])/(x[i+j]-x[i])); y[i]=p[i]; } f1=1; for(i=1;i<=j;i++) { f1*=(k-x[i]); } f2+=(y[1]*f1); n–; j++; } while(n!=1); f+=f2; printf("nf(%d) = %d", k , f); getch(); @divided difference, matlab MATLAB Answers — New Questions
Can I increase visibility of text insertion cursor in Matlab Editor?
Using Matlab 2016a on a Windows 10 system:
In the Editor, I use a black background with light text of various colors. The text is easily visible, but the text insertion cursor (the little vertical line segment) is thin and dim, and hard for me to see unless I’m staring right at it. The Win10 OS (under "ease of access" or "accessibility") has a setting for width of the text insertion cursor line, but this only affects the insertion line in Matlab’s command window; the insertion line in the editor is unaffected. Matlab preferences appear to have no setting for this. Any suggestions?Using Matlab 2016a on a Windows 10 system:
In the Editor, I use a black background with light text of various colors. The text is easily visible, but the text insertion cursor (the little vertical line segment) is thin and dim, and hard for me to see unless I’m staring right at it. The Win10 OS (under "ease of access" or "accessibility") has a setting for width of the text insertion cursor line, but this only affects the insertion line in Matlab’s command window; the insertion line in the editor is unaffected. Matlab preferences appear to have no setting for this. Any suggestions? Using Matlab 2016a on a Windows 10 system:
In the Editor, I use a black background with light text of various colors. The text is easily visible, but the text insertion cursor (the little vertical line segment) is thin and dim, and hard for me to see unless I’m staring right at it. The Win10 OS (under "ease of access" or "accessibility") has a setting for width of the text insertion cursor line, but this only affects the insertion line in Matlab’s command window; the insertion line in the editor is unaffected. Matlab preferences appear to have no setting for this. Any suggestions? text insertion cursor MATLAB Answers — New Questions
Script to represent constant offset in scaling of data
Hello,
I have the attached simulink model which appears to be working as I need it to. The idea is to scale my SP input from engineering units to 0-100%, which is how the controller operates. That way, my P/I/D settings are directly identical to those entered into the controller, and I can align the matlab data with the controller data.
How would I enter this into a simple matlab script?
K = 100/(MaxEU-MinEU)
C = 100*MinEU/(MaxEU-MinEU)
It correctly multiplies the SP input value by the gain K, then after the gain block adds an offset which is completely independent of the SP input. I am struggling to deal with this ‘extra constant input’ in a matlab script.
My goal is to have a SISO transfer function between the step input and the output of the first summing junction, that I can easily integrate into the rest of the model with series/parallel connections.
What does not work (as far as I can tell) is EUSP = tf(100/(MaxEU-MinEU) – 100*MinEU/(MaxEU-MinEU))
since it applies a static gain to the step input, including the offset term. With or without the tf.
Perhaps I need to use sumblk and directly assign inputs/outputs? Still a little confused how to set that constant input for the offset term.Hello,
I have the attached simulink model which appears to be working as I need it to. The idea is to scale my SP input from engineering units to 0-100%, which is how the controller operates. That way, my P/I/D settings are directly identical to those entered into the controller, and I can align the matlab data with the controller data.
How would I enter this into a simple matlab script?
K = 100/(MaxEU-MinEU)
C = 100*MinEU/(MaxEU-MinEU)
It correctly multiplies the SP input value by the gain K, then after the gain block adds an offset which is completely independent of the SP input. I am struggling to deal with this ‘extra constant input’ in a matlab script.
My goal is to have a SISO transfer function between the step input and the output of the first summing junction, that I can easily integrate into the rest of the model with series/parallel connections.
What does not work (as far as I can tell) is EUSP = tf(100/(MaxEU-MinEU) – 100*MinEU/(MaxEU-MinEU))
since it applies a static gain to the step input, including the offset term. With or without the tf.
Perhaps I need to use sumblk and directly assign inputs/outputs? Still a little confused how to set that constant input for the offset term. Hello,
I have the attached simulink model which appears to be working as I need it to. The idea is to scale my SP input from engineering units to 0-100%, which is how the controller operates. That way, my P/I/D settings are directly identical to those entered into the controller, and I can align the matlab data with the controller data.
How would I enter this into a simple matlab script?
K = 100/(MaxEU-MinEU)
C = 100*MinEU/(MaxEU-MinEU)
It correctly multiplies the SP input value by the gain K, then after the gain block adds an offset which is completely independent of the SP input. I am struggling to deal with this ‘extra constant input’ in a matlab script.
My goal is to have a SISO transfer function between the step input and the output of the first summing junction, that I can easily integrate into the rest of the model with series/parallel connections.
What does not work (as far as I can tell) is EUSP = tf(100/(MaxEU-MinEU) – 100*MinEU/(MaxEU-MinEU))
since it applies a static gain to the step input, including the offset term. With or without the tf.
Perhaps I need to use sumblk and directly assign inputs/outputs? Still a little confused how to set that constant input for the offset term. engineering units, pid, offset MATLAB Answers — New Questions
Why is MATLAB slow on a brand new laptop?
I bought a brand new computer with high performance metrics, installed with Windows 10. I installed MATLAB R2014b (8.4.0.150421) and I am experiencing very slow performance.
I have checked the benchmark results, using the "bench" command. In most cases, it seems that the system and application are fast except for ODE and 2-D tasks. I had a similar laptop but 3 years older than the current new one with a Windows 7 OS, and it was faster than this new one. Why is MATLAB slow on my current new laptop?I bought a brand new computer with high performance metrics, installed with Windows 10. I installed MATLAB R2014b (8.4.0.150421) and I am experiencing very slow performance.
I have checked the benchmark results, using the "bench" command. In most cases, it seems that the system and application are fast except for ODE and 2-D tasks. I had a similar laptop but 3 years older than the current new one with a Windows 7 OS, and it was faster than this new one. Why is MATLAB slow on my current new laptop? I bought a brand new computer with high performance metrics, installed with Windows 10. I installed MATLAB R2014b (8.4.0.150421) and I am experiencing very slow performance.
I have checked the benchmark results, using the "bench" command. In most cases, it seems that the system and application are fast except for ODE and 2-D tasks. I had a similar laptop but 3 years older than the current new one with a Windows 7 OS, and it was faster than this new one. Why is MATLAB slow on my current new laptop? matlabslowdown, slowperformanceofode, slowgraphics, maltlabslow, slow MATLAB Answers — New Questions
Using CTC los function with trainnet
Hi! I am designing a neural network to do phoneme classifcation for a simple speech recogniser. I’ve been evaluating the idea of using Connectionist Temporal Classifcation (CTC) as the loss function for this task, as other loss functions haven’t shown good results. Both my training and validation data are structured as an array datastore containing MFCC matrixs and the corresponding phoneme label to each matrix.
I’ve first tried by using a custom loop as the Matlab page suggests for this task, but I’ve had many problems developing the code, so now I’ve been trying to implement the CTC loss function into ‘trainnet’ this way:
numClasses = numel(unique(letras));
% Definir la arquitectura de la red neuronal
layers = [
sequenceInputLayer(39, "Normalization","zscore")
convolution1dLayer(15,20,’Padding’, ‘same’)
tanhLayer
convolution1dLayer(10,20,’Padding’,’same’)
tanhLayer
dropoutLayer(0.4)
convolution1dLayer(5,20,’Padding’,’same’)
tanhLayer
globalAveragePooling1dLayer
fullyConnectedLayer(numClasses)
softmaxLayer];
% Definir opciones de entrenamiento
options = trainingOptions(‘adam’, …
‘MaxEpochs’,50, …
‘MiniBatchSize’,64, …
‘ValidationData’, mfcc_dts_validate, …
‘Plots’,’training-progress’,…
‘Metrics’, ‘accuracy’);
% Entrenar la red neuronal
[net, info] = trainnet(mfcc_dts_train, layers, @modelLoss, options);
Where the model loss function is written as if it was meant to be used with a custom loop:
function [loss,gradients,state] = modelLoss(net,X,T)
Y = predict(net, X);
loss = ctc(Y,T);
% Calculate gradients of loss with respect to learnable parameters.
gradients = dlgradient(loss,net.Learnables);
end
The error I obtain is:
Error using trainnet
Caused by:
Undefined function ‘predict’ for input arguments of type ‘dlarray’.
I’m not quite sure of how to use a custom loss function into trainnet properly, as I don’t understand how to use the different inputs and outputs during training as the input data for the custom loss function. I’ve tried following the different tutorials for custom loops and loss functions, but I haven’t seen an example code for this case. If someone has an idea of how to face this, let me know!Hi! I am designing a neural network to do phoneme classifcation for a simple speech recogniser. I’ve been evaluating the idea of using Connectionist Temporal Classifcation (CTC) as the loss function for this task, as other loss functions haven’t shown good results. Both my training and validation data are structured as an array datastore containing MFCC matrixs and the corresponding phoneme label to each matrix.
I’ve first tried by using a custom loop as the Matlab page suggests for this task, but I’ve had many problems developing the code, so now I’ve been trying to implement the CTC loss function into ‘trainnet’ this way:
numClasses = numel(unique(letras));
% Definir la arquitectura de la red neuronal
layers = [
sequenceInputLayer(39, "Normalization","zscore")
convolution1dLayer(15,20,’Padding’, ‘same’)
tanhLayer
convolution1dLayer(10,20,’Padding’,’same’)
tanhLayer
dropoutLayer(0.4)
convolution1dLayer(5,20,’Padding’,’same’)
tanhLayer
globalAveragePooling1dLayer
fullyConnectedLayer(numClasses)
softmaxLayer];
% Definir opciones de entrenamiento
options = trainingOptions(‘adam’, …
‘MaxEpochs’,50, …
‘MiniBatchSize’,64, …
‘ValidationData’, mfcc_dts_validate, …
‘Plots’,’training-progress’,…
‘Metrics’, ‘accuracy’);
% Entrenar la red neuronal
[net, info] = trainnet(mfcc_dts_train, layers, @modelLoss, options);
Where the model loss function is written as if it was meant to be used with a custom loop:
function [loss,gradients,state] = modelLoss(net,X,T)
Y = predict(net, X);
loss = ctc(Y,T);
% Calculate gradients of loss with respect to learnable parameters.
gradients = dlgradient(loss,net.Learnables);
end
The error I obtain is:
Error using trainnet
Caused by:
Undefined function ‘predict’ for input arguments of type ‘dlarray’.
I’m not quite sure of how to use a custom loss function into trainnet properly, as I don’t understand how to use the different inputs and outputs during training as the input data for the custom loss function. I’ve tried following the different tutorials for custom loops and loss functions, but I haven’t seen an example code for this case. If someone has an idea of how to face this, let me know! Hi! I am designing a neural network to do phoneme classifcation for a simple speech recogniser. I’ve been evaluating the idea of using Connectionist Temporal Classifcation (CTC) as the loss function for this task, as other loss functions haven’t shown good results. Both my training and validation data are structured as an array datastore containing MFCC matrixs and the corresponding phoneme label to each matrix.
I’ve first tried by using a custom loop as the Matlab page suggests for this task, but I’ve had many problems developing the code, so now I’ve been trying to implement the CTC loss function into ‘trainnet’ this way:
numClasses = numel(unique(letras));
% Definir la arquitectura de la red neuronal
layers = [
sequenceInputLayer(39, "Normalization","zscore")
convolution1dLayer(15,20,’Padding’, ‘same’)
tanhLayer
convolution1dLayer(10,20,’Padding’,’same’)
tanhLayer
dropoutLayer(0.4)
convolution1dLayer(5,20,’Padding’,’same’)
tanhLayer
globalAveragePooling1dLayer
fullyConnectedLayer(numClasses)
softmaxLayer];
% Definir opciones de entrenamiento
options = trainingOptions(‘adam’, …
‘MaxEpochs’,50, …
‘MiniBatchSize’,64, …
‘ValidationData’, mfcc_dts_validate, …
‘Plots’,’training-progress’,…
‘Metrics’, ‘accuracy’);
% Entrenar la red neuronal
[net, info] = trainnet(mfcc_dts_train, layers, @modelLoss, options);
Where the model loss function is written as if it was meant to be used with a custom loop:
function [loss,gradients,state] = modelLoss(net,X,T)
Y = predict(net, X);
loss = ctc(Y,T);
% Calculate gradients of loss with respect to learnable parameters.
gradients = dlgradient(loss,net.Learnables);
end
The error I obtain is:
Error using trainnet
Caused by:
Undefined function ‘predict’ for input arguments of type ‘dlarray’.
I’m not quite sure of how to use a custom loss function into trainnet properly, as I don’t understand how to use the different inputs and outputs during training as the input data for the custom loss function. I’ve tried following the different tutorials for custom loops and loss functions, but I haven’t seen an example code for this case. If someone has an idea of how to face this, let me know! neural network, custom loss function, ctc, trainnet MATLAB Answers — New Questions
>> qardl(data, ppp, qqq, tau) Unrecognized function or variable ‘data’.
%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end %————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end%————————————————————————-%
% This procedure file provides the following outputs
% 1) long-run parameter (beta) and its covariance matrix
% 2) short-run parameter (phi) and its covariance matrix
% 3) short-run parameter (gamma) and its covariance matrix
% For these outputs, the following inputs are required
% 1) data : (n*(1+k)) matrix, where the 1st column is the dependent
% variable, and the last k columns are explanatory variables
% 2) ppp : p value of QARDL(p,q) model
% 3) qqq : q value of QARDL(p,q) model
% 4) tau : (s*1) vector of quantiles, which is sorted from the smallest to
% the largest.
% November 17, 2020
% Jin Seo Cho
%————————————————————————-%
function[bigbt, bigbtmm, bigphi, bigpi, bigam, bigff] = qardl(data,ppp,qqq,tau)
nn = size(data,1);
k0 = size(data,2)-1;
ss = size(tau,1);
tau = sort(tau,1);
pd = makedist(‘normal’,’mu’,0,’sigma’,1);
za = icdf(pd,0.975);
hb = zeros(ss,1);
hs = zeros(ss,1);
for jj = 1:ss
hb(jj,1) = (4.5*normpdf(icdf(pd,tau(jj,1)))^4/(nn*(2*icdf(pd,tau(jj,1))^2+1)^2))^0.2;
hs(jj,1) = za^(2/3)*(1.5*normpdf(icdf(pd,tau(jj,1)))^2/(nn*(2*icdf(pd,tau(jj,1))^2+1)))^(1/3);
end
yy = data(:,1);
xx = data(:,2:size(data,2));
ee = xx(2:nn,:) – xx(1:(nn-1),:);
ee = [zeros(1,k0);ee];
eei = zeros(nn-qqq,qqq*k0);
xxi = xx(qqq+1:nn,:);
yyi = zeros(nn-ppp,ppp);
for jj = 1:k0
for ii = 0:qqq-1
eei(:, ii+1+(jj-1)*qqq) = ee((qqq+1-ii):(nn-ii),jj);
end
end
for ii = 1:ppp
yyi(:,ii) = yy((1+ppp-ii):(nn-ii),1);
end
if (ppp>qqq)
X = [eei((size(eei,1)+1-size(yyi,1)):size(eei,1),:), xxi((size(xxi,1)+1-size(yyi,1)):size(xxi,1),:), yyi];
else
X = [eei, xxi, yyi((size(yyi,1)+1-size(xxi,1)):size(yyi,1),:)];
end
% parameter estimation
ONEX = [ones(size(X,1),1),X];
Y = yy((nn-size(X,1)+1):nn,1);
bt = zeros(size(ONEX,2),ss);
fh = zeros(ss,1);
for jj = 1:ss
[bt1] = qregressMatlab(Y,ONEX,tau(jj,1));
uu = Y – ONEX*bt1;
fh(jj,1) = mean(normpdf(-uu/hb(jj,1)))/hb(jj,1);
bt(:,jj) = bt1;
end
% testing long-run parameters: beta
barw = zeros(nn-1,qqq*k0);
for jj = 1:qqq
barw(jj:(nn-1),(k0*(jj-1)+1):k0*jj) = ee(2:(nn-jj+1),:);
end
tw = [ones(nn-1,1), barw];
mm = (xx((qqq+1):nn,:)’*xx((qqq+1):nn,:) – xx((qqq+1):nn,:)’*tw(qqq:(nn-1),:)*inv(tw(qqq:(nn-1),:)’*tw(qqq:(nn-1),:))*tw(qqq:(nn-1),:)’*xx((qqq+1):nn,:))/(nn-qqq)^2;
bb = zeros(ss,1);
for jj = 1:ss
bb(jj,1) = 1/((1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’)*fh(jj,1));
end
qq = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
qq(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))*bb(jj,1)*bb(ii,1);
end
end
midbt = zeros(k0,ss);
for jj = 1:ss
midbt(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj)/(1-sum(bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj),1)’);
end
bigbt = reshape(midbt,[],1);
bigbtmm = kron(qq,inv(mm));
% testing short-run parameters: phi
if (ppp>qqq)
yyj = zeros(nn-ppp,ppp);
xxj = zeros(nn-ppp,k0);
wwj = zeros(nn-ppp,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((ppp+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((ppp-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((ppp+1):nn,:);
kk = zeros(nn-ppp,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-ppp,1),xxj,wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(ii,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(ppp:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-ppp);
else
yyj = zeros(nn-qqq,ppp);
xxj = zeros(nn-qqq,k0);
wwj = zeros(nn-qqq,qqq*k0);
for jj = 1:ppp
yyj(:,jj) = yy((qqq+1-jj):(nn-jj),1);
end
for ii = 1:k0
for jj = 1:qqq
wwj(:,jj+(ii-1)*qqq) = ee((qqq-jj+2):(nn-jj+1),ii);
end
end
xxj = xx((qqq+1):nn,:);
kk = zeros(nn-qqq,ss*ppp);
for jj = 1:ppp
Y = yyj(:,jj);
ONEX = [ones(nn-qqq,1), xxj, wwj];
for ii = 1:ss
[bbt] = qregressMatlab(Y,ONEX,tau(jj,1));
kkk = Y – ONEX*bbt;
kk(:,jj+(ii-1)*ppp) = kkk;
end
end
tilw = tw(qqq:(nn-1),:);
lll = (kk’*kk – kk’*tilw*inv(tilw’*tilw)*tilw’*kk)/(nn-qqq);
end
cc = zeros(ss,ss);
for jj = 1:ss
for ii = 1:ss
psu = zeros(2,1);
psu(1,1) = tau(jj,1);
psu(2,1) = tau(ii,1);
cc(jj,ii) = (min(psu,[],1)’ – tau(jj,1)*tau(ii,1))/(fh(ii,1)*fh(jj,1));
end
end
bigpi = zeros(ss*ppp,ss*ppp);
for jj = 1:ss
for ii = 1:ss
psu = inv(lll((jj-1)*ppp+1:jj*ppp,(jj-1)*ppp+1:jj*ppp))*lll((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp)*inv(lll((ii-1)*ppp+1:ii*ppp,(ii-1)*ppp+1:ii*ppp));
bigpi((jj-1)*ppp+1:jj*ppp,(ii-1)*ppp+1:ii*ppp) = cc(jj,ii)*psu;
end
end
midphi = zeros(ppp,ss);
for jj = 1:ss
midphi(:,jj) = bt(2+(qqq+1)*k0:1+(qqq+1)*k0+ppp,jj);
end
bigphi = reshape(midphi,[],1);
% testing short-run parameters: gamma
midgam = zeros(k0,ss);
for jj = 1:ss
midgam(:,jj) = bt(2+qqq*k0:1+(qqq+1)*k0,jj);
end
bigam = reshape(midgam,[],1);
bilam = zeros(k0*ss,ss*ppp);
for jj = 1:ss
bilam(((jj-1)*k0+1):(jj*k0),(jj-1)*ppp+1:(jj*ppp)) = midbt(:,jj)*ones(1,ppp);
end
bigff = bilam*bigpi*bilam’;
end qardl MATLAB Answers — New Questions
I am having problem in simulink dimensions and port widths while implementing anti windup control using youla parameterization on inverted pendulum
I am using a single input multi output system with plant matrix dimensions with A= 4*4 ;B = 4*1; C= 2*4;D = 2*1 . Here is what i want to implement and my problem with dimensionsI am using a single input multi output system with plant matrix dimensions with A= 4*4 ;B = 4*1; C= 2*4;D = 2*1 . Here is what i want to implement and my problem with dimensions I am using a single input multi output system with plant matrix dimensions with A= 4*4 ;B = 4*1; C= 2*4;D = 2*1 . Here is what i want to implement and my problem with dimensions problem with dimension errors and port widths MATLAB Answers — New Questions
Synchronous Machine pu fundamental rotor alignment in Park transfromation
Hi
I am using the power systems blocks, specifically the synchronous machine pu fundamental. My question is which axis is aligned with the a axis: d or q. When I plot the d and q currents from the measurement port, d=0, and according to the matlab documentation that means the d-axis is aligned with the a-axis.
To confirm this hypothesis, I connected the block "abc to dq0" to the voltage source to transform directly the currents with the position of the motor. The configuration is "aligned with phase A axis". Unfortunately, now the q=0 and d>1. Then, I changed the configuration to "90 degrees behind phase A axis" and the behaviour is the same, d=0, but the plots are mirrored.
Summary:
The synchronous machine pu fundamental aligns the d-axis with the a-axis during the Park transformation?
Why the currents are mirrored (multiplied by -1)?Hi
I am using the power systems blocks, specifically the synchronous machine pu fundamental. My question is which axis is aligned with the a axis: d or q. When I plot the d and q currents from the measurement port, d=0, and according to the matlab documentation that means the d-axis is aligned with the a-axis.
To confirm this hypothesis, I connected the block "abc to dq0" to the voltage source to transform directly the currents with the position of the motor. The configuration is "aligned with phase A axis". Unfortunately, now the q=0 and d>1. Then, I changed the configuration to "90 degrees behind phase A axis" and the behaviour is the same, d=0, but the plots are mirrored.
Summary:
The synchronous machine pu fundamental aligns the d-axis with the a-axis during the Park transformation?
Why the currents are mirrored (multiplied by -1)? Hi
I am using the power systems blocks, specifically the synchronous machine pu fundamental. My question is which axis is aligned with the a axis: d or q. When I plot the d and q currents from the measurement port, d=0, and according to the matlab documentation that means the d-axis is aligned with the a-axis.
To confirm this hypothesis, I connected the block "abc to dq0" to the voltage source to transform directly the currents with the position of the motor. The configuration is "aligned with phase A axis". Unfortunately, now the q=0 and d>1. Then, I changed the configuration to "90 degrees behind phase A axis" and the behaviour is the same, d=0, but the plots are mirrored.
Summary:
The synchronous machine pu fundamental aligns the d-axis with the a-axis during the Park transformation?
Why the currents are mirrored (multiplied by -1)? power_conversion_control, electric_motor_control, power_electronics_control MATLAB Answers — New Questions