This error was detected while a MEX-file was running. If the MEX-file is not an official MathWorks function, please examine its source code for errors. Please consult the External Interfaces Guide for information on debugging MEX-files.

83 views (last 30 days)
Rachel Parise
Rachel Parise on 27 Mar 2020
Answered: Sai Sri Pathuri on 6 May 2020
Here is the code I am running... I don't know anything about MatLAB so any explenation you have... pretend your explaining it to your mom. please help!!!
% Memory Efficient Principal Component Analysis of Large Mass Spectrometry
% Imaging Datasets
%
% Alan M. Race, Andrew D. Palmer, Rory T. Steven, Iain B. Styles, Josephine
% Bunch
% This relies on mex files and so a compiler must be installed prior to
% running this code and the following command must be run:
% mex -setup
% 'PAPER STEP:' indicates a named section that is described in the article
% 'CHANGE:' indicates lines that need to be changed based on personal setup
% Using imzMLConverter to parse and access imzML files. Please ensure that
% the the latest version is used
% Available from http://www.imzMLConverter.co.uk
% Add imzMLConverter JAR file to the class path so that we can use the
% methods implemented in it
% CHANGE: Make sure the path to imzMLConverter is correct
javaclasspath([pwd filesep 'imzMLConverter' filesep 'imzMLConverter.jar']);
% Parse the imzML file to load in header detail (such as the location of
% each spectrum)
% CHANGE: Change to the imzML file of choice
filename = [pwd filesep 'LEMS of Mild TBI_No blk.imzML'];
imzML = imzMLConverter.ImzMLHandler.parseimzML(filename);
nColumns = imzML.getWidth();
nRows = imzML.getHeight();
% PAPER STEP: Determine peak list
disp('Determining peak list...');
% If data is stored as m/z-count pairs then we need to replace
% zeros. This can be done in a number of ways, but this method assumes that
% the first spectrum in the image is well populated and that the smallest
% distance (on the time axis) between two values is the resolution of the
% detector. This, along with the m/z range used, allows us to calculate the
% m/z axis.
% CHANGE: This is designed for TOF data and will need to be altered to a
% suitable method for other mass analysers. The simplest method would be to
% use binning. If the data is stored in the imzML 'Continuous' format then
% the replacing of zeros can be removed
minMZ = 50;
maxMZ = 1250;
mzs = imzML.getSpectrum(1, 1).getmzArray();
counts = imzML.getSpectrum(1, 1).getIntensityArray();
[mzsFull, countsFull, detectorBinSize] = TOF(mzs, counts, minMZ, maxMZ);
% Generate 'basepeak spectrum' as described in
% Imaging Mass Spectrometry Data Reduction: Automated Feature Identification and Extraction
% McDonnell et al. 2010
% Described in supplimentary information
basepeakSpectrum = 0;
time = 0;
for y = 1:nRows
for x = 1:nColumns
% PAPER STEP: Read in spectrum
% Get the m/z list and the counts from the .ibd file
mzs = imzML.getSpectrum(x, y).getmzArray();
counts = imzML.getSpectrum(x, y).getIntensityArray();
% If we aren't dealing with a square image then no point
% pre-processing
if(isempty(counts))
continue;
end
% PAPER STEP: Pre-process spectrum
% CHANGE: Change if not analysing TOF data
[mzs, counts] = TOF(mzs, counts, minMZ, maxMZ, detectorBinSize);
% Smooth the spectrum
% CHANGE: If a different smoothing method or window size is
% required
[mzs, counts] = savitzkyGolay(mzs, counts, 25, 2);
basepeakSpectrum = max(basepeakSpectrum, counts);
end
end
% Smooth the basepeak spectrum
% CHANGE: If a different smoothing method or window size is required
[mzs, basepeakSpectrum] = savitzkyGolay(mzs, basepeakSpectrum, 25, 2);
% Get the peak list by peak picking
[mzList, countList, indicesList] = gradientPeakDetection(mzs, basepeakSpectrum);
disp('Creating summarisation matrices...');
nSpectra = 0;
L = zeros([length(mzList),1]);
Q = zeros(length(mzList)*(length(mzList)+1)/2, 1);
for y = 1:nRows
for x = 1:nColumns
% PAPER STEP: Read in spectrum
% Get the m/z list and the counts from the .ibd file
mzs = imzML.getSpectrum(x, y).getmzArray();
counts = imzML.getSpectrum(x, y).getIntensityArray();
% If we aren't dealing with a square image then no point
% pre-processing
if(isempty(counts))
continue;
end
% PAPER STEP: Pre-process spectrum
% CHANGE: Change if not analysing TOF data
[mzs, counts] = TOF(mzs, counts, minMZ, maxMZ, detectorBinSize);
% Smooth the spectrum
% CHANGE: If a different smoothing method or window size is
% required
[mzs, counts] = savitzkyGolay(mzs, counts, 25, 2);
% PAPER STEP: Update summarisation matrices
L = L + counts(indicesList);
% Attempt to update Q using the mex file update
try
Q = updateQ(Q, counts(indicesList));
catch exception
% Failed to call updateQ so compile all functions if a compiler
% is installed on the system
% Compiliing is different on Linux and Windows
if(isunix)
mex -largeArrayDims updateQ.c
mex -largeArrayDims calculateE.c
mex -largeArrayDims symmeig.c -lmwlapack
elseif(ispc)
ext = mexext;
arch = ext(end-1:end);
compiler = mex.getCompilerConfigurations().Manufacturer;
if(strcmp(compiler, 'LCC'))
folder = 'lcc';
elseif(strcmp(compiler, 'GNU'))
folder = 'GNU';
else
error('No compiler selected?');
end
lapacklib = fullfile(matlabroot, 'extern', 'lib', 'win64', 'mingw64', 'libmwlapack.lib');
mex('-largeArrayDims', 'symmeig.c', lapacklib)
mex('-largeArrayDims', 'updateQ.c')
mex('-largeArrayDims', 'calculateE.c')
end
% Update Q now the compilation has succeeded
Q = updateQ(Q, counts(indicesList));
end
nSpectra = nSpectra + 1;
end
end
% PAPER STEP: Calculate Σ
Q = calculateE(Q, L, nSpectra);
disp('Eigendecomposition of covariance matrix...');
% PAPER STEP: Eigendecomposition of covariance matrix
[lambda, coeff] = symmeig(Q, length(countList));
% Eigenvalues are returned in descending order, so to be compatibile with
% common assumptions, rearrange the eigenvalues and eigenvectors
lambda = lambda(end:-1:1);
coeff = coeff(:, end:-1:1);
explained = (cumsum(lambda) ./ sum(lambda)) * 100;
% CHANGE: variance to retain as a percentage
varianceToRetain = 99;
numPCs = sum(explained <= varianceToRetain);
disp('Calculating scores...');
% PAPER STEP: Calculate scores
scores = zeros(nRows, nColumns, numPCs);
for y = 1:nRows
for x = 1:nColumns
% PAPER STEP: Read in spectrum
% Get the m/z list and the counts from the .ibd file
mzs = imzML.getSpectrum(x, y).getmzArray();
counts = imzML.getSpectrum(x, y).getIntensityArray();
% If we aren't dealing with a square image then no point
% pre-processing
if(isempty(counts))
continue;
end
% PAPER STEP: Pre-process spectrum
% CHANGE: Change if not analysing TOF data
[mzs, counts] = TOF(mzs, counts, minMZ, maxMZ, detectorBinSize);
% Smooth the spectrum
% CHANGE: If a different smoothing method or window size is
% required
[mzs, counts] = savitzkyGolay(mzs, counts, 25, 2);
for p = 1:numPCs
scores(y, x, p) = counts(indicesList)' * coeff(:, p);
end
end
end
But every time I run, the program crashes with a "fatal expection"
--------------------------------------------------------------------------------
Access violation detected at Fri Mar 27 01:21:16 2020 -0400
--------------------------------------------------------------------------------
Configuration:
Crash Decoding : Disabled - No sandbox or build area path
Crash Mode : continue (default)
Default Encoding : windows-1252
Deployed : false
Graphics Driver : Unknown hardware
Graphics card 1 : NVIDIA ( 0x10de ) NVIDIA NVS 310 Version 10.18.13.6191 (2016-2-8)
Java Version : Java 1.8.0_152-b16 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
MATLAB Architecture : win64
MATLAB Entitlement ID : 1182280
MATLAB Root : C:\Program Files\MATLAB\R2018b
MATLAB Version : 9.5.0.1298439 (R2018b) Update 7
OpenGL : hardware
Operating System : Microsoft Windows 10 Enterprise
Process ID : 1624
Processor ID : x86 Family 6 Model 79 Stepping 1, GenuineIntel
Session Key : dbffb72d-6666-4282-9923-e0cea04f9764
Window System : Version 10.0 (Build 17763)
Fault Count: 1
Abnormal termination
Register State (from fault):
RAX = 00000002208d8820 RBX = ffffffffffffffff
RCX = ffffffffffffffff RDX = 0000000000000001
RSP = 00000000043f8cf0 RBP = 00000000043f8d10
RSI = 0000000000000baa RDI = 0000000000000000
R8 = 0000000000000000 R9 = 0000000000000000
R10 = 00000002208d8820 R11 = 0000000000000001
R12 = 0000000000000baa R13 = 0000000220c93250
R14 = 0000000000000002 R15 = 00000000043f8e90
RIP = 000000000b54152e EFL = 00010202
CS = 0033 FS = 0053 GS = 002b
Stack Trace (from fault):
[ 0] 0x000000000b54152e C:\Program Files\MATLAB\memoryEfficientPCA\updateQ.mexw64+00005422 mexFunction+00000142
[ 1] 0x00000000fc635474 bin\win64\libmex.dll+00349300 MexRetrieveVersion+00003348
[ 2] 0x00000000fc63566c bin\win64\libmex.dll+00349804 MexRetrieveVersion+00003852
[ 3] 0x00000000fc6357d4 bin\win64\libmex.dll+00350164 MexRetrieveVersion+00004212
[ 4] 0x00000000fc618fe9 bin\win64\libmex.dll+00233449 mexUnlock_800+00025273
[ 5] 0x000000001748e007 bin\win64\pgo\m_dispatcher.dll+00057351 Mfh_file::dispatch_fh_impl+00001111
[ 6] 0x000000001748da9e bin\win64\pgo\m_dispatcher.dll+00055966 Mfh_file::dispatch_fh+00000062
[ 7] 0x00000000182b2272 bin\win64\pgo\m_lxe.dll+00729714 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00156298
[ 8] 0x000000001834d4dc bin\win64\pgo\m_lxe.dll+01365212 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00791796
[ 9] 0x000000001834e0bc bin\win64\pgo\m_lxe.dll+01368252 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00794836
[ 10] 0x000000001834f432 bin\win64\pgo\m_lxe.dll+01373234 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00799818
[ 11] 0x0000000018350098 bin\win64\pgo\m_lxe.dll+01376408 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00802992
[ 12] 0x000000001834f57f bin\win64\pgo\m_lxe.dll+01373567 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00800151
[ 13] 0x000000001834f67e bin\win64\pgo\m_lxe.dll+01373822 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00800406
[ 14] 0x00000000182783dd bin\win64\pgo\m_lxe.dll+00492509
[ 15] 0x00000000182b6be5 bin\win64\pgo\m_lxe.dll+00748517 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00175101
[ 16] 0x00000000182b620c bin\win64\pgo\m_lxe.dll+00745996 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00172580
[ 17] 0x00000000182b40f9 bin\win64\pgo\m_lxe.dll+00737529 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00164113
[ 18] 0x00000000182b4a6b bin\win64\pgo\m_lxe.dll+00739947 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00166531
[ 19] 0x00000000182b43c9 bin\win64\pgo\m_lxe.dll+00738249 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00164833
[ 20] 0x000000001748e007 bin\win64\pgo\m_dispatcher.dll+00057351 Mfh_file::dispatch_fh_impl+00001111
[ 21] 0x000000001748da9e bin\win64\pgo\m_dispatcher.dll+00055966 Mfh_file::dispatch_fh+00000062
[ 22] 0x000000001827380d bin\win64\pgo\m_lxe.dll+00473101
[ 23] 0x00000000183fc356 bin\win64\pgo\m_lxe.dll+02081622 MathWorks::lxe::ShutdownLxeEngine+00021874
[ 24] 0x000000001834d4dc bin\win64\pgo\m_lxe.dll+01365212 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00791796
[ 25] 0x000000001834e0bc bin\win64\pgo\m_lxe.dll+01368252 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00794836
[ 26] 0x000000001834f432 bin\win64\pgo\m_lxe.dll+01373234 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00799818
[ 27] 0x0000000018350098 bin\win64\pgo\m_lxe.dll+01376408 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00802992
[ 28] 0x000000001834f57f bin\win64\pgo\m_lxe.dll+01373567 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00800151
[ 29] 0x000000001834f67e bin\win64\pgo\m_lxe.dll+01373822 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00800406
[ 30] 0x00000000182783dd bin\win64\pgo\m_lxe.dll+00492509
[ 31] 0x00000000182b6be5 bin\win64\pgo\m_lxe.dll+00748517 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00175101
[ 32] 0x00000000182b620c bin\win64\pgo\m_lxe.dll+00745996 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00172580
[ 33] 0x00000000182afc29 bin\win64\pgo\m_lxe.dll+00719913 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00146497
[ 34] 0x00000000182af34e bin\win64\pgo\m_lxe.dll+00717646 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00144230
[ 35] 0x00000000182af456 bin\win64\pgo\m_lxe.dll+00717910 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00144494
[ 36] 0x000000001828cc38 bin\win64\pgo\m_lxe.dll+00576568 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00003152
[ 37] 0x000000001828cbe6 bin\win64\pgo\m_lxe.dll+00576486 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00003070
[ 38] 0x000000001828fe8d bin\win64\pgo\m_lxe.dll+00589453 mwboost::archive::detail::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>::oserializer<mwboost::archive::polymorphic_oarchive,foundation::msg_svc::eventmgr::BaseEvent>+00016037
[ 39] 0x00000000176e69e7 bin\win64\pgo\m_interpreter.dll+00354791 inEvalCmdWithLocalReturn+00000063
[ 40] 0x00000000fb610388 bin\win64\libmwbridge.dll+00131976 mnParser+00001304
[ 41] 0x0000000017283618 bin\win64\mcr.dll+00341528 mcr::runtime::setInterpreterThreadSingletonToCurrent+00020808
[ 42] 0x000000001728414d bin\win64\mcr.dll+00344397 mcr::runtime::setInterpreterThreadSingletonToCurrent+00023677
[ 43] 0x000000001724b1ba bin\win64\mcr.dll+00111034 mcrOptions::set_use_license_manager+00075498
[ 44] 0x0000000017266e74 bin\win64\mcr.dll+00224884 mcrOptions::set_use_license_manager+00189348
[ 45] 0x00000000fd02cfee bin\win64\iqm.dll+00643054 iqm::PackagedTaskPlugin::execute+00000894
[ 46] 0x00000000fd02ce63 bin\win64\iqm.dll+00642659 iqm::PackagedTaskPlugin::execute+00000499
[ 47] 0x00000000fcffcc07 bin\win64\iqm.dll+00445447 iqm::Iqm::setupIqmFcnPtrs+00076215
[ 48] 0x00000000fcffcc59 bin\win64\iqm.dll+00445529 iqm::Iqm::setupIqmFcnPtrs+00076297
[ 49] 0x00000000fcffca16 bin\win64\iqm.dll+00444950 iqm::Iqm::setupIqmFcnPtrs+00075718
[ 50] 0x00000000fcfd9748 bin\win64\iqm.dll+00300872 iqm::Iqm::deliver+00005880
[ 51] 0x00000000fcfd8eef bin\win64\iqm.dll+00298735 iqm::Iqm::deliver+00003743
[ 52] 0x00000000fcfdac0d bin\win64\iqm.dll+00306189 iqm::Iqm::deliver+00011197
[ 53] 0x0000000100203765 bin\win64\libmwservices.dll+02176869 services::system_events::PpeDispatchHook::dispatchOne+00036213
[ 54] 0x0000000100212a53 bin\win64\libmwservices.dll+02239059 sysq::addProcessPendingEventsUnitTestHook+00006035
[ 55] 0x0000000100214300 bin\win64\libmwservices.dll+02245376 sysq::getCondition+00004208
[ 56] 0x000000010021595d bin\win64\libmwservices.dll+02251101 svWS_ProcessPendingEvents+00000221
[ 57] 0x0000000017287724 bin\win64\mcr.dll+00358180 mcr::runtime::setInterpreterThreadSingletonToCurrent+00037460
[ 58] 0x0000000017287f16 bin\win64\mcr.dll+00360214 mcr::runtime::setInterpreterThreadSingletonToCurrent+00039494
[ 59] 0x000000001727cabf bin\win64\mcr.dll+00314047 mcr_process_events+00001007
[ 60] 0x000000001718d040 bin\win64\MVMLocal.dll+00380992 mvm_server::inproc::LocalFactory::terminate+00177312
[ 61] 0x00000000fa9d9480 bin\win64\mvm.dll+01741952 mvm::detail::SessionImpl::initWithOptions+00000592
[ 62] 0x00000000fa9da170 bin\win64\mvm.dll+01745264 mvm::detail::SessionImpl::runMain+00000128
[ 63] 0x00000000fa9da395 bin\win64\mvm.dll+01745813 mvm::detail::SessionImpl::runMatlabDesktop+00000261
[ 64] 0x0000000140007036 bin\win64\MATLAB.exe+00028726 mwboost::serialization::singleton_module::unlock+00000966
[ 65] 0x0000000140007f13 bin\win64\MATLAB.exe+00032531 mwboost::serialization::singleton_module::unlock+00004771
[ 66] 0x00007ffc36977974 C:\WINDOWS\System32\KERNEL32.DLL+00096628 BaseThreadInitThunk+00000020
[ 67] 0x00007ffc3947a261 C:\WINDOWS\SYSTEM32\ntdll.dll+00434785 RtlUserThreadStart+00000033
This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.

Answers (1)

Sai Sri Pathuri
Sai Sri Pathuri on 6 May 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!