Tag Archives: matlab
How to get regression plot for validation data using trainbr training function using MATLAB’s nntool?
In nntool, when trainbr algorithm is used, MATLAB is not providing Regression plot for validation data but only for train and test data. However, it is displaying Regression plot for training, validation & test data while using trainlm training algorithm. For reference the figures are shown below:
FIGURE SHOWING TRAINBR REGRESSION PLOT & OTHER MODEL DETAILS
FIGURE SHOWING TRAINLM REGRESSION PLOT & OTHER MODEL DETAILS
Please help me in debugging this issue. Thanks in advance!In nntool, when trainbr algorithm is used, MATLAB is not providing Regression plot for validation data but only for train and test data. However, it is displaying Regression plot for training, validation & test data while using trainlm training algorithm. For reference the figures are shown below:
FIGURE SHOWING TRAINBR REGRESSION PLOT & OTHER MODEL DETAILS
FIGURE SHOWING TRAINLM REGRESSION PLOT & OTHER MODEL DETAILS
Please help me in debugging this issue. Thanks in advance! In nntool, when trainbr algorithm is used, MATLAB is not providing Regression plot for validation data but only for train and test data. However, it is displaying Regression plot for training, validation & test data while using trainlm training algorithm. For reference the figures are shown below:
FIGURE SHOWING TRAINBR REGRESSION PLOT & OTHER MODEL DETAILS
FIGURE SHOWING TRAINLM REGRESSION PLOT & OTHER MODEL DETAILS
Please help me in debugging this issue. Thanks in advance! nntool, ann, trainbr, trainlm, regression MATLAB Answers — New Questions
How to read all the files in a folder based on file name?
Dear MATLAB Experts,
I have hundreds of files in a folder and I need toread all the files using last 5 digits of file name.
RSS_SSMIS_FCDR_V07R00_F17_D20220701_S0134_E0326_R80783
Here problem is this information is random in each file S0134_E0326.
However R80783 is increasing for next file, as shown in image.
%% code for readin file is
clear;clc; close;
ncfile_1 = ‘RSS_SSMIS_FCDR_V07R00_F17_D20220701_S0134_E0326_R80783.nc’ ;
ncinfo(ncfile_1)
ncdisp(ncfile_1)Dear MATLAB Experts,
I have hundreds of files in a folder and I need toread all the files using last 5 digits of file name.
RSS_SSMIS_FCDR_V07R00_F17_D20220701_S0134_E0326_R80783
Here problem is this information is random in each file S0134_E0326.
However R80783 is increasing for next file, as shown in image.
%% code for readin file is
clear;clc; close;
ncfile_1 = ‘RSS_SSMIS_FCDR_V07R00_F17_D20220701_S0134_E0326_R80783.nc’ ;
ncinfo(ncfile_1)
ncdisp(ncfile_1) Dear MATLAB Experts,
I have hundreds of files in a folder and I need toread all the files using last 5 digits of file name.
RSS_SSMIS_FCDR_V07R00_F17_D20220701_S0134_E0326_R80783
Here problem is this information is random in each file S0134_E0326.
However R80783 is increasing for next file, as shown in image.
%% code for readin file is
clear;clc; close;
ncfile_1 = ‘RSS_SSMIS_FCDR_V07R00_F17_D20220701_S0134_E0326_R80783.nc’ ;
ncinfo(ncfile_1)
ncdisp(ncfile_1) data import, matrix array, cell arrays MATLAB Answers — New Questions
Warning when using non-normal link function for generalized linear models with fitglme
When I fit my data to a generalized linear model using the function fitglme, I get the following warning:
Warning: The ‘Reciprocal’ and ‘Power’ links require the linear predictor to be non-negative. However, the model
assumes that the linear predictor is unconstrained.
This happens although the data are non-negative, and I do not see any option to tell the fitting function that it should not worry. Question: How do I avoid this warning? (I mean "avoid" not "suppress". A warning usually indicates that something is wrong, so how do I correct it?)When I fit my data to a generalized linear model using the function fitglme, I get the following warning:
Warning: The ‘Reciprocal’ and ‘Power’ links require the linear predictor to be non-negative. However, the model
assumes that the linear predictor is unconstrained.
This happens although the data are non-negative, and I do not see any option to tell the fitting function that it should not worry. Question: How do I avoid this warning? (I mean "avoid" not "suppress". A warning usually indicates that something is wrong, so how do I correct it?) When I fit my data to a generalized linear model using the function fitglme, I get the following warning:
Warning: The ‘Reciprocal’ and ‘Power’ links require the linear predictor to be non-negative. However, the model
assumes that the linear predictor is unconstrained.
This happens although the data are non-negative, and I do not see any option to tell the fitting function that it should not worry. Question: How do I avoid this warning? (I mean "avoid" not "suppress". A warning usually indicates that something is wrong, so how do I correct it?) generalized linear model, fitglme MATLAB Answers — New Questions
Implementing Doppler Shift in FMCW Radar simulation
Hi, Im trying to implement Doppler Shift in my FMCW Radar simulation code.
Problem is that i can’t find the code which transmits the FMCW signal of vradar(victom radar)
As far as i know, the FMCW signal is transmitted by the function ‘step’
ex) sig = step(fmcwwav1);
But there is no code line like this for vrader in my simulation
Oddly, When i run the entire code, the results appear to be correct.
So my question,
what part of the code is responsible for the signal transmission of vradar
what part of the code should i modify to add some doppler shift to the vradar signal
I’ll attach my code at the end
Also my reffernce code isright below my code
Thank you for the help, in advance
%% My Code
clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Define Victim FMCW Radar Waveform
rng(2017); % Set random number generator for repeatable results
fc = 24e9; % Center frequency (Hz)
c = physconst(‘LightSpeed’); % Speed of light (m/s)
lambda = freq2wavelen(fc,c); % Wavelength (m)
rangeMax = 40.05; % Maximum range (m)
rangeRes = 0.15; % Desired range resolution (m)
vMax = 230*1000/3600; % Maximum velocity of the Radar (m/s)
tSw = 6*range2time(rangeMax,c); % Sweep Time [s]
bw = rangeres2bw(rangeRes,c); % Bandwith [Hz]
slope = bw/tSw; % Sweep slope
fr_max = range2beat(rangeMax,slope,c); % Maximum frequency corresponding to the maximum range [Hz]
fd_max = speed2dop(2*vMax,lambda); % Maximum frequency corresponding to the Doppler Shift [Hz]
fb_max = fr_max+fd_max; % Maximum beat frequency
% fs = max(2*fb_max,bw); % Sampling rate
fs = 2*fb_max;
fs = round(fs*tSw) / tSw; % sampling rate * sweep time must be integer
frequnecy_range = [fc fc+bw]; % Frequency range [Hz]
VtargetMax = 20*1000/3600;
Max_doppler = (2*VtargetMax*fc)/c % Maximum Speed []: ??
fmcwwav1 = phased.FMCWWaveform(‘SweepTime’,tSw,’SweepBandwidth’,bw,’SampleRate’,fs);
sig = fmcwwav1();
Ns = numel(sig);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Define Interfering FMCW Radar Waveform
fcRdr2 = 24e9; % Center frequency (Hz)
lambdaRdr2 = freq2wavelen(fcRdr2,c); % Wavelength (m)
rangeMaxRdr2 = 40.05; % Maximum range (m)
rangeResRdr2 = 0.15; % Desired range resolution (m)
vMaxRdr2 = vMax; % Maximum Velocity of cars (m/s)
tSwRdr2 = 5*range2time(rangeMaxRdr2,c); % Sweep Time [s]
bwRdr2 = rangeres2bw(rangeResRdr2,c); % Bandwith [Hz]
slopeRdr2 = bwRdr2/tSwRdr2; % Sweep slope
fr_maxRdr2 = range2beat(rangeMaxRdr2,slopeRdr2,c); % Maximum frequency corresponding to the maximum range [Hz]
fd_maxRdr2 = speed2dop(2*vMaxRdr2,lambdaRdr2); % Maximum frequency corresponding to the Doppler Shift [Hz]
fb_maxRdr2 = fr_maxRdr2+fd_maxRdr2; % Maximum beat frequency
% fsRdr2 = max(2*fb_maxRdr2,bwRdr2); % Sampling rate
fsRdr2 = 2*fb_maxRdr2;
fsRdr2 = round(fsRdr2*tSwRdr2) / tSwRdr2; % sampling rate * sweep time must be integer
frequnecy_rangeRdr2 = [fcRdr2 fcRdr2+bwRdr2]; % Frequency range [Hz]
Max_dopplerRdr2 = (c*fsRdr2)/(4*fcRdr2); % Maximum Speed []: ??
fmcwwav2 = phased.FMCWWaveform(‘SweepTime’,tSwRdr2,’SweepBandwidth’,bwRdr2, ‘SampleRate’,fsRdr2);
sigRdr2 = fmcwwav2();
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Plot the victim radar and interfering radar waveforms
% figure(1)
% pspectrum(repmat(sig,3,1),fmcwwav1.SampleRate,’spectrogram’, …
% ‘Reassign’,true,’FrequencyResolution’,10e6)
% axis([0 15 -80 80]); title(‘Victim Radar’);
% figure(2)
% pspectrum(repmat(sigRdr2,3,1),fmcwwav1.SampleRate,’spectrogram’,…
% ‘Reassign’,true,’FrequencyResolution’,10e6,’MinThreshold’,-13)
% axis([0 15 -80 80]); title(‘Interfering Radar’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Model Victim and Interfering Radar Transceivers
% Construct the array for Victim Radar
Nve = 2*3; % Number of virtual antenna with 2Tx, 3Rx
antElmnt = phased.IsotropicAntennaElement(‘BackBaffled’,false);
rxVArray = phased.ULA(‘Element’,antElmnt,’NumElements’,Nve,’ElementSpacing’,freq2wavelen(fc)/2,’Taper’,taylorwin(Nve));
antAperture = 6.06e-4; % Antenna aperture (m^2)
antGain = aperture2gain(antAperture,lambda); % Antenna gain (dB)
txPkPower = db2pow(13)*1e-3; % Tx peak power (W)
rxNF = 4.5; % Receiver noise figure (dB)
% Model Victim Radar Transceiver
vradar = radarTransceiver("Waveform",fmcwwav1);
vradar.Transmitter = phased.Transmitter(‘PeakPower’,txPkPower,’Gain’,antGain);
vradar.TransmitAntenna = phased.Radiator(‘Sensor’,antElmnt,’OperatingFrequency’,fc);
vradar.ReceiveAntenna = phased.Collector(‘Sensor’,rxVArray,’OperatingFrequency’,fc);
vradar.Receiver = phased.ReceiverPreamp(‘Gain’,antGain,’NoiseFigure’,rxNF,’SampleRate’,fmcwwav1.SampleRate);
% Define Victim Radar
VictimRadar = radarTransceiver(‘Waveform’,fmcwwav1,’Transmitter’,vradar.Transmitter, …
‘TransmitAntenna’,vradar.TransmitAntenna,’ReceiveAntenna’,vradar.ReceiveAntenna ,’Receiver’,vradar.Receiver);
% Model Interfering Radar Transceiver
iradar = clone(vradar);
iradar.Waveform = fmcwwav2;
vradar.Receiver = phased.ReceiverPreamp(‘Gain’,antGain,’NoiseMethod’,’Noise power’,’NoisePower’,0);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Model Free Space Propagation Channel for Interference
% Create a multipath channel for interfering radar
channelIradar = helperCreateMultiPathChannel(‘SampleRate’,fmcwwav2.SampleRate, …
‘OperatingFrequency’,fcRdr2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Driving scenario
% Create driving scenario
[scenario, egoCar] = helperAutoDrivingScenario;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Radar simulation
Nft = fmcwwav1.SweepTime*fmcwwav1.SampleRate; % Number of fast-time samples
Nft = round(Nft);
Nsweep = 256; % Number of slow-time samples
% Nr = 2^nextpow2(Nft); % Number of range samples
% Nd = 2^nextpow2(Nsweep);
Nr = 512;
Nd = 256;
snr = 0.001;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Domain Calculate
% GPT Code
% Define the range and Doppler axes
rangeAxis = linspace(0, rangeMax, Nr/2);
dopplerAxis = linspace(-VtargetMax, VtargetMax, Nd);
% Doppler axis in m/s
dopplerAxis_mps = dopplerAxis * lambda / 2;
% For visualization in km/h, convert m/s to km/h
dopplerAxis_kmph = dopplerAxis_mps * 3.6;
%%
% Run the simulation loop
sweepTime = fmcwwav1.SweepTime;
while advance(scenario)
% Get the current scenario time
time = scenario.SimulationTime;
% Get current target poses in ego vehicle’s reference frame
tgtPoses = targetPoses(egoCar);
actProf = actorProfiles(scenario);
% Assemble data cube at current scenario time
Xcube = zeros(Nft,Nve,Nsweep);
XcubeVradar = zeros(Nft,Nve,Nsweep);
% Generate waveform signal to transmit for interfering radar
sIsig = step(iradar.Waveform);
% Match the length of interfering signal with victim sweep
sIsig = repmat(sIsig,ceil(Nft/length(sIsig)),1);
for m = 1:Nsweep
sIcar = sIsig(1:Nft);
sIsig = circshift(sIsig,length(sIsig)-Nft);
% Generate all paths to victim radar
[vpaths, ipaths] = helperGeneratePaths(tgtPoses,actProf,[lambda lambdaRdr2]); % Global to local coord system(s) inside
% Send signal from interfering radar to power amplifier for transmit
IcarSig = step(iradar.Transmitter,sIcar);
% Radiate signal from antenna elements of interfering radar
xtIcar = step(iradar.TransmitAntenna,IcarSig,[ ipaths(1).AngleOfDeparture ipaths(2).AngleOfDeparture]);
% Propagate signal along paths
[xrxIradar,angIradar ]= step(channelIradar, xtIcar, ipaths,time);
% Pass the signals through the receive antenna array elements
xcIradar = step(vradar.ReceiveAntenna, xrxIradar, angIradar);
% Pass the signals at the output of the receive antenna element to the receiver amplifier
rxInt = step(vradar.Receiver,xcIradar);
% Get the received signal without interference
rxVictim = VictimRadar(vpaths,time);
% Dechirp the received signal
rxVsig = dechirp(rxVictim,sig);
% Save sweep to data cube – create ADC data
XcubeVradar(:,:,m) = awgn(rxVsig, snr, ‘measured’);
% Dechirp the received signal + Interference and save sweep to data cube
rx = dechirp(rxVictim+rxInt,sig);
Xcube(:,:,m) = awgn(rx, snr, ‘measured’);
% Get the current scenario time
time = time + fmcwwav1.SweepTime;
% Move targets forward in time for next sweep
tgtPoses(1).Position=[tgtPoses(1).Position]+[tgtPoses(1).Velocity]*fmcwwav1.SweepTime;
tgtPoses(2).Position=[tgtPoses(2).Position]+[tgtPoses(2).Velocity]*fmcwwav1.SweepTime;
end
% break;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Sig Process for interfered signal
% Perform 2D FFT on the interfered signal cube
Xcube_tmp = Xcube(:,1,:);
Xcube_tmp = squeeze(Xcube_tmp);
Xcube_tmp2 = Xcube_tmp(1:Nr,1:Nd);
%fft, fftshift
Xcube_fft = fftshift(fft2(Xcube_tmp2, Nr, Nd), 2);
% fft calibration
Xcube_fft = Xcube_fft(1:Nr/2, :);
%% Sig Process for Original signal
% Perform 2D FFT on the non-interfered signal cube
XcubeVradar_tmp = XcubeVradar(:,1,:);
XcubeVradar_tmp = squeeze(XcubeVradar_tmp);
%Nr, Nd만큼만 남기고 나머지는 버림
XcubeVradar_tmp2 = XcubeVradar_tmp(1:Nr,1:Nd);
%fft, fft shift
XcubeVradar_fft = fftshift(fft2(XcubeVradar_tmp2, Nr, Nd), 2);
% fft calibration
XcubeVradar_fft = XcubeVradar_fft(1:Nr/2, :);
%% Both signal Process
% Compute the magnitude of the FFT results
Xcube_fft_mag = abs(Xcube_fft);
XcubeVradar_fft_mag = abs(XcubeVradar_fft);
% Scaling for better visualization
Xcube_fft_mag_db = 10*log10(Xcube_fft_mag);
XcubeVradar_fft_mag_db = 10*log10(XcubeVradar_fft_mag);
%% Visualization with surf
% Interfered Signal Range-Doppler Map
figure;
surf(dopplerAxis, rangeAxis, Xcube_fft_mag_db);
shading interp;
xlabel(‘Doppler (Hz)’);
ylabel(‘Range (m)’);
zlabel(‘Magnitude (dB)’);
title(‘Interfered Signal Range-Doppler Map’);
colorbar;
% Non-interfered Signal Range-Doppler Map
figure;
% surf(XcubeVradar_fft_mag_db);
surf(dopplerAxis, rangeAxis, XcubeVradar_fft_mag_db);
shading interp;
xlabel(‘Doppler (m/s)’);
ylabel(‘Range (m)’);
zlabel(‘Magnitude (dB)’);
title(‘Non-interfered Signal Range-Doppler Map’);
colorbar;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
https://kr.mathworks.com/help/radar/ug/simulate-fmcw-interference-between-automotive-radars.html
The example code seems to be changed.
so i leave the original code that i downloaded before
https://drive.google.com/file/d/1M4ahfFvZHQKs1uqF2biRSOqrbrbKo5Yk/view?usp=sharingHi, Im trying to implement Doppler Shift in my FMCW Radar simulation code.
Problem is that i can’t find the code which transmits the FMCW signal of vradar(victom radar)
As far as i know, the FMCW signal is transmitted by the function ‘step’
ex) sig = step(fmcwwav1);
But there is no code line like this for vrader in my simulation
Oddly, When i run the entire code, the results appear to be correct.
So my question,
what part of the code is responsible for the signal transmission of vradar
what part of the code should i modify to add some doppler shift to the vradar signal
I’ll attach my code at the end
Also my reffernce code isright below my code
Thank you for the help, in advance
%% My Code
clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Define Victim FMCW Radar Waveform
rng(2017); % Set random number generator for repeatable results
fc = 24e9; % Center frequency (Hz)
c = physconst(‘LightSpeed’); % Speed of light (m/s)
lambda = freq2wavelen(fc,c); % Wavelength (m)
rangeMax = 40.05; % Maximum range (m)
rangeRes = 0.15; % Desired range resolution (m)
vMax = 230*1000/3600; % Maximum velocity of the Radar (m/s)
tSw = 6*range2time(rangeMax,c); % Sweep Time [s]
bw = rangeres2bw(rangeRes,c); % Bandwith [Hz]
slope = bw/tSw; % Sweep slope
fr_max = range2beat(rangeMax,slope,c); % Maximum frequency corresponding to the maximum range [Hz]
fd_max = speed2dop(2*vMax,lambda); % Maximum frequency corresponding to the Doppler Shift [Hz]
fb_max = fr_max+fd_max; % Maximum beat frequency
% fs = max(2*fb_max,bw); % Sampling rate
fs = 2*fb_max;
fs = round(fs*tSw) / tSw; % sampling rate * sweep time must be integer
frequnecy_range = [fc fc+bw]; % Frequency range [Hz]
VtargetMax = 20*1000/3600;
Max_doppler = (2*VtargetMax*fc)/c % Maximum Speed []: ??
fmcwwav1 = phased.FMCWWaveform(‘SweepTime’,tSw,’SweepBandwidth’,bw,’SampleRate’,fs);
sig = fmcwwav1();
Ns = numel(sig);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Define Interfering FMCW Radar Waveform
fcRdr2 = 24e9; % Center frequency (Hz)
lambdaRdr2 = freq2wavelen(fcRdr2,c); % Wavelength (m)
rangeMaxRdr2 = 40.05; % Maximum range (m)
rangeResRdr2 = 0.15; % Desired range resolution (m)
vMaxRdr2 = vMax; % Maximum Velocity of cars (m/s)
tSwRdr2 = 5*range2time(rangeMaxRdr2,c); % Sweep Time [s]
bwRdr2 = rangeres2bw(rangeResRdr2,c); % Bandwith [Hz]
slopeRdr2 = bwRdr2/tSwRdr2; % Sweep slope
fr_maxRdr2 = range2beat(rangeMaxRdr2,slopeRdr2,c); % Maximum frequency corresponding to the maximum range [Hz]
fd_maxRdr2 = speed2dop(2*vMaxRdr2,lambdaRdr2); % Maximum frequency corresponding to the Doppler Shift [Hz]
fb_maxRdr2 = fr_maxRdr2+fd_maxRdr2; % Maximum beat frequency
% fsRdr2 = max(2*fb_maxRdr2,bwRdr2); % Sampling rate
fsRdr2 = 2*fb_maxRdr2;
fsRdr2 = round(fsRdr2*tSwRdr2) / tSwRdr2; % sampling rate * sweep time must be integer
frequnecy_rangeRdr2 = [fcRdr2 fcRdr2+bwRdr2]; % Frequency range [Hz]
Max_dopplerRdr2 = (c*fsRdr2)/(4*fcRdr2); % Maximum Speed []: ??
fmcwwav2 = phased.FMCWWaveform(‘SweepTime’,tSwRdr2,’SweepBandwidth’,bwRdr2, ‘SampleRate’,fsRdr2);
sigRdr2 = fmcwwav2();
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Plot the victim radar and interfering radar waveforms
% figure(1)
% pspectrum(repmat(sig,3,1),fmcwwav1.SampleRate,’spectrogram’, …
% ‘Reassign’,true,’FrequencyResolution’,10e6)
% axis([0 15 -80 80]); title(‘Victim Radar’);
% figure(2)
% pspectrum(repmat(sigRdr2,3,1),fmcwwav1.SampleRate,’spectrogram’,…
% ‘Reassign’,true,’FrequencyResolution’,10e6,’MinThreshold’,-13)
% axis([0 15 -80 80]); title(‘Interfering Radar’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Model Victim and Interfering Radar Transceivers
% Construct the array for Victim Radar
Nve = 2*3; % Number of virtual antenna with 2Tx, 3Rx
antElmnt = phased.IsotropicAntennaElement(‘BackBaffled’,false);
rxVArray = phased.ULA(‘Element’,antElmnt,’NumElements’,Nve,’ElementSpacing’,freq2wavelen(fc)/2,’Taper’,taylorwin(Nve));
antAperture = 6.06e-4; % Antenna aperture (m^2)
antGain = aperture2gain(antAperture,lambda); % Antenna gain (dB)
txPkPower = db2pow(13)*1e-3; % Tx peak power (W)
rxNF = 4.5; % Receiver noise figure (dB)
% Model Victim Radar Transceiver
vradar = radarTransceiver("Waveform",fmcwwav1);
vradar.Transmitter = phased.Transmitter(‘PeakPower’,txPkPower,’Gain’,antGain);
vradar.TransmitAntenna = phased.Radiator(‘Sensor’,antElmnt,’OperatingFrequency’,fc);
vradar.ReceiveAntenna = phased.Collector(‘Sensor’,rxVArray,’OperatingFrequency’,fc);
vradar.Receiver = phased.ReceiverPreamp(‘Gain’,antGain,’NoiseFigure’,rxNF,’SampleRate’,fmcwwav1.SampleRate);
% Define Victim Radar
VictimRadar = radarTransceiver(‘Waveform’,fmcwwav1,’Transmitter’,vradar.Transmitter, …
‘TransmitAntenna’,vradar.TransmitAntenna,’ReceiveAntenna’,vradar.ReceiveAntenna ,’Receiver’,vradar.Receiver);
% Model Interfering Radar Transceiver
iradar = clone(vradar);
iradar.Waveform = fmcwwav2;
vradar.Receiver = phased.ReceiverPreamp(‘Gain’,antGain,’NoiseMethod’,’Noise power’,’NoisePower’,0);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Model Free Space Propagation Channel for Interference
% Create a multipath channel for interfering radar
channelIradar = helperCreateMultiPathChannel(‘SampleRate’,fmcwwav2.SampleRate, …
‘OperatingFrequency’,fcRdr2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Driving scenario
% Create driving scenario
[scenario, egoCar] = helperAutoDrivingScenario;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Radar simulation
Nft = fmcwwav1.SweepTime*fmcwwav1.SampleRate; % Number of fast-time samples
Nft = round(Nft);
Nsweep = 256; % Number of slow-time samples
% Nr = 2^nextpow2(Nft); % Number of range samples
% Nd = 2^nextpow2(Nsweep);
Nr = 512;
Nd = 256;
snr = 0.001;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Domain Calculate
% GPT Code
% Define the range and Doppler axes
rangeAxis = linspace(0, rangeMax, Nr/2);
dopplerAxis = linspace(-VtargetMax, VtargetMax, Nd);
% Doppler axis in m/s
dopplerAxis_mps = dopplerAxis * lambda / 2;
% For visualization in km/h, convert m/s to km/h
dopplerAxis_kmph = dopplerAxis_mps * 3.6;
%%
% Run the simulation loop
sweepTime = fmcwwav1.SweepTime;
while advance(scenario)
% Get the current scenario time
time = scenario.SimulationTime;
% Get current target poses in ego vehicle’s reference frame
tgtPoses = targetPoses(egoCar);
actProf = actorProfiles(scenario);
% Assemble data cube at current scenario time
Xcube = zeros(Nft,Nve,Nsweep);
XcubeVradar = zeros(Nft,Nve,Nsweep);
% Generate waveform signal to transmit for interfering radar
sIsig = step(iradar.Waveform);
% Match the length of interfering signal with victim sweep
sIsig = repmat(sIsig,ceil(Nft/length(sIsig)),1);
for m = 1:Nsweep
sIcar = sIsig(1:Nft);
sIsig = circshift(sIsig,length(sIsig)-Nft);
% Generate all paths to victim radar
[vpaths, ipaths] = helperGeneratePaths(tgtPoses,actProf,[lambda lambdaRdr2]); % Global to local coord system(s) inside
% Send signal from interfering radar to power amplifier for transmit
IcarSig = step(iradar.Transmitter,sIcar);
% Radiate signal from antenna elements of interfering radar
xtIcar = step(iradar.TransmitAntenna,IcarSig,[ ipaths(1).AngleOfDeparture ipaths(2).AngleOfDeparture]);
% Propagate signal along paths
[xrxIradar,angIradar ]= step(channelIradar, xtIcar, ipaths,time);
% Pass the signals through the receive antenna array elements
xcIradar = step(vradar.ReceiveAntenna, xrxIradar, angIradar);
% Pass the signals at the output of the receive antenna element to the receiver amplifier
rxInt = step(vradar.Receiver,xcIradar);
% Get the received signal without interference
rxVictim = VictimRadar(vpaths,time);
% Dechirp the received signal
rxVsig = dechirp(rxVictim,sig);
% Save sweep to data cube – create ADC data
XcubeVradar(:,:,m) = awgn(rxVsig, snr, ‘measured’);
% Dechirp the received signal + Interference and save sweep to data cube
rx = dechirp(rxVictim+rxInt,sig);
Xcube(:,:,m) = awgn(rx, snr, ‘measured’);
% Get the current scenario time
time = time + fmcwwav1.SweepTime;
% Move targets forward in time for next sweep
tgtPoses(1).Position=[tgtPoses(1).Position]+[tgtPoses(1).Velocity]*fmcwwav1.SweepTime;
tgtPoses(2).Position=[tgtPoses(2).Position]+[tgtPoses(2).Velocity]*fmcwwav1.SweepTime;
end
% break;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Sig Process for interfered signal
% Perform 2D FFT on the interfered signal cube
Xcube_tmp = Xcube(:,1,:);
Xcube_tmp = squeeze(Xcube_tmp);
Xcube_tmp2 = Xcube_tmp(1:Nr,1:Nd);
%fft, fftshift
Xcube_fft = fftshift(fft2(Xcube_tmp2, Nr, Nd), 2);
% fft calibration
Xcube_fft = Xcube_fft(1:Nr/2, :);
%% Sig Process for Original signal
% Perform 2D FFT on the non-interfered signal cube
XcubeVradar_tmp = XcubeVradar(:,1,:);
XcubeVradar_tmp = squeeze(XcubeVradar_tmp);
%Nr, Nd만큼만 남기고 나머지는 버림
XcubeVradar_tmp2 = XcubeVradar_tmp(1:Nr,1:Nd);
%fft, fft shift
XcubeVradar_fft = fftshift(fft2(XcubeVradar_tmp2, Nr, Nd), 2);
% fft calibration
XcubeVradar_fft = XcubeVradar_fft(1:Nr/2, :);
%% Both signal Process
% Compute the magnitude of the FFT results
Xcube_fft_mag = abs(Xcube_fft);
XcubeVradar_fft_mag = abs(XcubeVradar_fft);
% Scaling for better visualization
Xcube_fft_mag_db = 10*log10(Xcube_fft_mag);
XcubeVradar_fft_mag_db = 10*log10(XcubeVradar_fft_mag);
%% Visualization with surf
% Interfered Signal Range-Doppler Map
figure;
surf(dopplerAxis, rangeAxis, Xcube_fft_mag_db);
shading interp;
xlabel(‘Doppler (Hz)’);
ylabel(‘Range (m)’);
zlabel(‘Magnitude (dB)’);
title(‘Interfered Signal Range-Doppler Map’);
colorbar;
% Non-interfered Signal Range-Doppler Map
figure;
% surf(XcubeVradar_fft_mag_db);
surf(dopplerAxis, rangeAxis, XcubeVradar_fft_mag_db);
shading interp;
xlabel(‘Doppler (m/s)’);
ylabel(‘Range (m)’);
zlabel(‘Magnitude (dB)’);
title(‘Non-interfered Signal Range-Doppler Map’);
colorbar;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
https://kr.mathworks.com/help/radar/ug/simulate-fmcw-interference-between-automotive-radars.html
The example code seems to be changed.
so i leave the original code that i downloaded before
https://drive.google.com/file/d/1M4ahfFvZHQKs1uqF2biRSOqrbrbKo5Yk/view?usp=sharing Hi, Im trying to implement Doppler Shift in my FMCW Radar simulation code.
Problem is that i can’t find the code which transmits the FMCW signal of vradar(victom radar)
As far as i know, the FMCW signal is transmitted by the function ‘step’
ex) sig = step(fmcwwav1);
But there is no code line like this for vrader in my simulation
Oddly, When i run the entire code, the results appear to be correct.
So my question,
what part of the code is responsible for the signal transmission of vradar
what part of the code should i modify to add some doppler shift to the vradar signal
I’ll attach my code at the end
Also my reffernce code isright below my code
Thank you for the help, in advance
%% My Code
clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Define Victim FMCW Radar Waveform
rng(2017); % Set random number generator for repeatable results
fc = 24e9; % Center frequency (Hz)
c = physconst(‘LightSpeed’); % Speed of light (m/s)
lambda = freq2wavelen(fc,c); % Wavelength (m)
rangeMax = 40.05; % Maximum range (m)
rangeRes = 0.15; % Desired range resolution (m)
vMax = 230*1000/3600; % Maximum velocity of the Radar (m/s)
tSw = 6*range2time(rangeMax,c); % Sweep Time [s]
bw = rangeres2bw(rangeRes,c); % Bandwith [Hz]
slope = bw/tSw; % Sweep slope
fr_max = range2beat(rangeMax,slope,c); % Maximum frequency corresponding to the maximum range [Hz]
fd_max = speed2dop(2*vMax,lambda); % Maximum frequency corresponding to the Doppler Shift [Hz]
fb_max = fr_max+fd_max; % Maximum beat frequency
% fs = max(2*fb_max,bw); % Sampling rate
fs = 2*fb_max;
fs = round(fs*tSw) / tSw; % sampling rate * sweep time must be integer
frequnecy_range = [fc fc+bw]; % Frequency range [Hz]
VtargetMax = 20*1000/3600;
Max_doppler = (2*VtargetMax*fc)/c % Maximum Speed []: ??
fmcwwav1 = phased.FMCWWaveform(‘SweepTime’,tSw,’SweepBandwidth’,bw,’SampleRate’,fs);
sig = fmcwwav1();
Ns = numel(sig);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Define Interfering FMCW Radar Waveform
fcRdr2 = 24e9; % Center frequency (Hz)
lambdaRdr2 = freq2wavelen(fcRdr2,c); % Wavelength (m)
rangeMaxRdr2 = 40.05; % Maximum range (m)
rangeResRdr2 = 0.15; % Desired range resolution (m)
vMaxRdr2 = vMax; % Maximum Velocity of cars (m/s)
tSwRdr2 = 5*range2time(rangeMaxRdr2,c); % Sweep Time [s]
bwRdr2 = rangeres2bw(rangeResRdr2,c); % Bandwith [Hz]
slopeRdr2 = bwRdr2/tSwRdr2; % Sweep slope
fr_maxRdr2 = range2beat(rangeMaxRdr2,slopeRdr2,c); % Maximum frequency corresponding to the maximum range [Hz]
fd_maxRdr2 = speed2dop(2*vMaxRdr2,lambdaRdr2); % Maximum frequency corresponding to the Doppler Shift [Hz]
fb_maxRdr2 = fr_maxRdr2+fd_maxRdr2; % Maximum beat frequency
% fsRdr2 = max(2*fb_maxRdr2,bwRdr2); % Sampling rate
fsRdr2 = 2*fb_maxRdr2;
fsRdr2 = round(fsRdr2*tSwRdr2) / tSwRdr2; % sampling rate * sweep time must be integer
frequnecy_rangeRdr2 = [fcRdr2 fcRdr2+bwRdr2]; % Frequency range [Hz]
Max_dopplerRdr2 = (c*fsRdr2)/(4*fcRdr2); % Maximum Speed []: ??
fmcwwav2 = phased.FMCWWaveform(‘SweepTime’,tSwRdr2,’SweepBandwidth’,bwRdr2, ‘SampleRate’,fsRdr2);
sigRdr2 = fmcwwav2();
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Plot the victim radar and interfering radar waveforms
% figure(1)
% pspectrum(repmat(sig,3,1),fmcwwav1.SampleRate,’spectrogram’, …
% ‘Reassign’,true,’FrequencyResolution’,10e6)
% axis([0 15 -80 80]); title(‘Victim Radar’);
% figure(2)
% pspectrum(repmat(sigRdr2,3,1),fmcwwav1.SampleRate,’spectrogram’,…
% ‘Reassign’,true,’FrequencyResolution’,10e6,’MinThreshold’,-13)
% axis([0 15 -80 80]); title(‘Interfering Radar’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Model Victim and Interfering Radar Transceivers
% Construct the array for Victim Radar
Nve = 2*3; % Number of virtual antenna with 2Tx, 3Rx
antElmnt = phased.IsotropicAntennaElement(‘BackBaffled’,false);
rxVArray = phased.ULA(‘Element’,antElmnt,’NumElements’,Nve,’ElementSpacing’,freq2wavelen(fc)/2,’Taper’,taylorwin(Nve));
antAperture = 6.06e-4; % Antenna aperture (m^2)
antGain = aperture2gain(antAperture,lambda); % Antenna gain (dB)
txPkPower = db2pow(13)*1e-3; % Tx peak power (W)
rxNF = 4.5; % Receiver noise figure (dB)
% Model Victim Radar Transceiver
vradar = radarTransceiver("Waveform",fmcwwav1);
vradar.Transmitter = phased.Transmitter(‘PeakPower’,txPkPower,’Gain’,antGain);
vradar.TransmitAntenna = phased.Radiator(‘Sensor’,antElmnt,’OperatingFrequency’,fc);
vradar.ReceiveAntenna = phased.Collector(‘Sensor’,rxVArray,’OperatingFrequency’,fc);
vradar.Receiver = phased.ReceiverPreamp(‘Gain’,antGain,’NoiseFigure’,rxNF,’SampleRate’,fmcwwav1.SampleRate);
% Define Victim Radar
VictimRadar = radarTransceiver(‘Waveform’,fmcwwav1,’Transmitter’,vradar.Transmitter, …
‘TransmitAntenna’,vradar.TransmitAntenna,’ReceiveAntenna’,vradar.ReceiveAntenna ,’Receiver’,vradar.Receiver);
% Model Interfering Radar Transceiver
iradar = clone(vradar);
iradar.Waveform = fmcwwav2;
vradar.Receiver = phased.ReceiverPreamp(‘Gain’,antGain,’NoiseMethod’,’Noise power’,’NoisePower’,0);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Model Free Space Propagation Channel for Interference
% Create a multipath channel for interfering radar
channelIradar = helperCreateMultiPathChannel(‘SampleRate’,fmcwwav2.SampleRate, …
‘OperatingFrequency’,fcRdr2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Driving scenario
% Create driving scenario
[scenario, egoCar] = helperAutoDrivingScenario;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Radar simulation
Nft = fmcwwav1.SweepTime*fmcwwav1.SampleRate; % Number of fast-time samples
Nft = round(Nft);
Nsweep = 256; % Number of slow-time samples
% Nr = 2^nextpow2(Nft); % Number of range samples
% Nd = 2^nextpow2(Nsweep);
Nr = 512;
Nd = 256;
snr = 0.001;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Domain Calculate
% GPT Code
% Define the range and Doppler axes
rangeAxis = linspace(0, rangeMax, Nr/2);
dopplerAxis = linspace(-VtargetMax, VtargetMax, Nd);
% Doppler axis in m/s
dopplerAxis_mps = dopplerAxis * lambda / 2;
% For visualization in km/h, convert m/s to km/h
dopplerAxis_kmph = dopplerAxis_mps * 3.6;
%%
% Run the simulation loop
sweepTime = fmcwwav1.SweepTime;
while advance(scenario)
% Get the current scenario time
time = scenario.SimulationTime;
% Get current target poses in ego vehicle’s reference frame
tgtPoses = targetPoses(egoCar);
actProf = actorProfiles(scenario);
% Assemble data cube at current scenario time
Xcube = zeros(Nft,Nve,Nsweep);
XcubeVradar = zeros(Nft,Nve,Nsweep);
% Generate waveform signal to transmit for interfering radar
sIsig = step(iradar.Waveform);
% Match the length of interfering signal with victim sweep
sIsig = repmat(sIsig,ceil(Nft/length(sIsig)),1);
for m = 1:Nsweep
sIcar = sIsig(1:Nft);
sIsig = circshift(sIsig,length(sIsig)-Nft);
% Generate all paths to victim radar
[vpaths, ipaths] = helperGeneratePaths(tgtPoses,actProf,[lambda lambdaRdr2]); % Global to local coord system(s) inside
% Send signal from interfering radar to power amplifier for transmit
IcarSig = step(iradar.Transmitter,sIcar);
% Radiate signal from antenna elements of interfering radar
xtIcar = step(iradar.TransmitAntenna,IcarSig,[ ipaths(1).AngleOfDeparture ipaths(2).AngleOfDeparture]);
% Propagate signal along paths
[xrxIradar,angIradar ]= step(channelIradar, xtIcar, ipaths,time);
% Pass the signals through the receive antenna array elements
xcIradar = step(vradar.ReceiveAntenna, xrxIradar, angIradar);
% Pass the signals at the output of the receive antenna element to the receiver amplifier
rxInt = step(vradar.Receiver,xcIradar);
% Get the received signal without interference
rxVictim = VictimRadar(vpaths,time);
% Dechirp the received signal
rxVsig = dechirp(rxVictim,sig);
% Save sweep to data cube – create ADC data
XcubeVradar(:,:,m) = awgn(rxVsig, snr, ‘measured’);
% Dechirp the received signal + Interference and save sweep to data cube
rx = dechirp(rxVictim+rxInt,sig);
Xcube(:,:,m) = awgn(rx, snr, ‘measured’);
% Get the current scenario time
time = time + fmcwwav1.SweepTime;
% Move targets forward in time for next sweep
tgtPoses(1).Position=[tgtPoses(1).Position]+[tgtPoses(1).Velocity]*fmcwwav1.SweepTime;
tgtPoses(2).Position=[tgtPoses(2).Position]+[tgtPoses(2).Velocity]*fmcwwav1.SweepTime;
end
% break;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Sig Process for interfered signal
% Perform 2D FFT on the interfered signal cube
Xcube_tmp = Xcube(:,1,:);
Xcube_tmp = squeeze(Xcube_tmp);
Xcube_tmp2 = Xcube_tmp(1:Nr,1:Nd);
%fft, fftshift
Xcube_fft = fftshift(fft2(Xcube_tmp2, Nr, Nd), 2);
% fft calibration
Xcube_fft = Xcube_fft(1:Nr/2, :);
%% Sig Process for Original signal
% Perform 2D FFT on the non-interfered signal cube
XcubeVradar_tmp = XcubeVradar(:,1,:);
XcubeVradar_tmp = squeeze(XcubeVradar_tmp);
%Nr, Nd만큼만 남기고 나머지는 버림
XcubeVradar_tmp2 = XcubeVradar_tmp(1:Nr,1:Nd);
%fft, fft shift
XcubeVradar_fft = fftshift(fft2(XcubeVradar_tmp2, Nr, Nd), 2);
% fft calibration
XcubeVradar_fft = XcubeVradar_fft(1:Nr/2, :);
%% Both signal Process
% Compute the magnitude of the FFT results
Xcube_fft_mag = abs(Xcube_fft);
XcubeVradar_fft_mag = abs(XcubeVradar_fft);
% Scaling for better visualization
Xcube_fft_mag_db = 10*log10(Xcube_fft_mag);
XcubeVradar_fft_mag_db = 10*log10(XcubeVradar_fft_mag);
%% Visualization with surf
% Interfered Signal Range-Doppler Map
figure;
surf(dopplerAxis, rangeAxis, Xcube_fft_mag_db);
shading interp;
xlabel(‘Doppler (Hz)’);
ylabel(‘Range (m)’);
zlabel(‘Magnitude (dB)’);
title(‘Interfered Signal Range-Doppler Map’);
colorbar;
% Non-interfered Signal Range-Doppler Map
figure;
% surf(XcubeVradar_fft_mag_db);
surf(dopplerAxis, rangeAxis, XcubeVradar_fft_mag_db);
shading interp;
xlabel(‘Doppler (m/s)’);
ylabel(‘Range (m)’);
zlabel(‘Magnitude (dB)’);
title(‘Non-interfered Signal Range-Doppler Map’);
colorbar;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
https://kr.mathworks.com/help/radar/ug/simulate-fmcw-interference-between-automotive-radars.html
The example code seems to be changed.
so i leave the original code that i downloaded before
https://drive.google.com/file/d/1M4ahfFvZHQKs1uqF2biRSOqrbrbKo5Yk/view?usp=sharing radar, fmcw, tx, transmitter, doppler, radar simulation, phase shift MATLAB Answers — New Questions
sprintf in 2 lines, with 2 variables, in bold, and interpreter latex
In the following example,
plot(1:10,1:10)
alpha = 3;
string = ‘Hello’;
text(5,5,sprintf(‘$\textbf{%s}$ {\boldmath$\alpha=%d$}’,string,alpha),’interpreter’,’latex’,’FontSize’,20)
how can I bring the text corresponding to
‘{\boldmath$\alpha=%d$}’,alpha
to a second line, i.e. below the text "Hello"?In the following example,
plot(1:10,1:10)
alpha = 3;
string = ‘Hello’;
text(5,5,sprintf(‘$\textbf{%s}$ {\boldmath$\alpha=%d$}’,string,alpha),’interpreter’,’latex’,’FontSize’,20)
how can I bring the text corresponding to
‘{\boldmath$\alpha=%d$}’,alpha
to a second line, i.e. below the text "Hello"? In the following example,
plot(1:10,1:10)
alpha = 3;
string = ‘Hello’;
text(5,5,sprintf(‘$\textbf{%s}$ {\boldmath$\alpha=%d$}’,string,alpha),’interpreter’,’latex’,’FontSize’,20)
how can I bring the text corresponding to
‘{\boldmath$\alpha=%d$}’,alpha
to a second line, i.e. below the text "Hello"? sprintf, multiline, bold, interpreter, latex MATLAB Answers — New Questions
How to extract data from a MATLAB figure containing multiple line plots and save it in a file?
I am working on the simulations of a BSIM3 type MOSFET model and as a result I need to extract data from a plot which shows the relationship between Ids(drain-source current, in the figure Y-axis; Iprobe1.i) and Vds(drain-source voltage, in the figure X-axis; VD) at increasing levels of gate voltage VG (say at VG=4V,6V,8V…)each represented by a different color. Please ignore the legend beside the plot which shows the value for VG as 0V, 1V etc since they are wrong and misguiding because of maybe improper operation of the TADS interface that I am using for connecting Advanced Design System (my original environment for simulation) and MATLAB.
I have seen examples of data extraction from 2 or 3 line plots maximum but never for multiple line plots and I have no idea how to approach this issue since I even want the VG value to be accounted for. (For eg: at VG=say 4V, I want a list of x and y values and similarly for VG=6V and so on). I have attached the MATLAB figure with this file, kindly help me out and reach out for further details.I am working on the simulations of a BSIM3 type MOSFET model and as a result I need to extract data from a plot which shows the relationship between Ids(drain-source current, in the figure Y-axis; Iprobe1.i) and Vds(drain-source voltage, in the figure X-axis; VD) at increasing levels of gate voltage VG (say at VG=4V,6V,8V…)each represented by a different color. Please ignore the legend beside the plot which shows the value for VG as 0V, 1V etc since they are wrong and misguiding because of maybe improper operation of the TADS interface that I am using for connecting Advanced Design System (my original environment for simulation) and MATLAB.
I have seen examples of data extraction from 2 or 3 line plots maximum but never for multiple line plots and I have no idea how to approach this issue since I even want the VG value to be accounted for. (For eg: at VG=say 4V, I want a list of x and y values and similarly for VG=6V and so on). I have attached the MATLAB figure with this file, kindly help me out and reach out for further details. I am working on the simulations of a BSIM3 type MOSFET model and as a result I need to extract data from a plot which shows the relationship between Ids(drain-source current, in the figure Y-axis; Iprobe1.i) and Vds(drain-source voltage, in the figure X-axis; VD) at increasing levels of gate voltage VG (say at VG=4V,6V,8V…)each represented by a different color. Please ignore the legend beside the plot which shows the value for VG as 0V, 1V etc since they are wrong and misguiding because of maybe improper operation of the TADS interface that I am using for connecting Advanced Design System (my original environment for simulation) and MATLAB.
I have seen examples of data extraction from 2 or 3 line plots maximum but never for multiple line plots and I have no idea how to approach this issue since I even want the VG value to be accounted for. (For eg: at VG=say 4V, I want a list of x and y values and similarly for VG=6V and so on). I have attached the MATLAB figure with this file, kindly help me out and reach out for further details. data extraction, multiple plots MATLAB Answers — New Questions
I can`t solve out this problem, there is always Output argument “varargout{2}” (and possibly others) not assigned a value in the execution with “dlarray/dlgradient” function.
function [netG, stateG, lossG] = modelGStep(netG, wrappedImage, realImage, stateG, learningRate, beta1, beta2)
% insure GPU dlarray
if ~isa(wrappedImage, ‘dlarray’)
wrappedImage = dlarray(gpuArray(wrappedImage), ‘SSCB’);
elseif ~strcmp(underlyingType(wrappedImage), ‘gpuArray’)
wrappedImage = dlarray(gpuArray(extractdata(wrappedImage)), ‘SSCB’);
end
if ~isa(realImage, ‘dlarray’)
realImage = dlarray(gpuArray(realImage), ‘SSCB’);
elseif ~strcmp(underlyingType(realImage), ‘gpuArray’)
realImage = dlarray(gpuArray(extractdata(realImage)), ‘SSCB’);
end
wrappedImage = dlarray(gpuArray(wrappedImage), ‘SSCB’);
realImage = dlarray(gpuArray(realImage), ‘SSCB’);
% insure dlfeval use dlgradient
[gradG, lossG] = dlfeval(@dlgradient, lossG, netG.Learnables);
fakeImage = predict(netG, wrappedImage);
lossG = mean((fakeImage – realImage).^2, ‘all’);
[gradG, lossG] = dlgradient(lossG, netG.Learnables);
[netG, stateG] = adamupdate(netG, gradG, stateG, learningRate, beta1, beta2);
return
end
this is my function.
below is my code
for epoch = 1:epochs
for i = 1:size(unwrapImages, 4)
realImage = unwrapImages(:,:,:,i);
wrappedImage = wrappedImages(:,:,:,i);
[netG, stateG, lossG] = modelGStep(netG, wrappedImage, realImage, stateG, learningRate, beta1, beta2);
[lossD, gradD] = modelDStep(netD, realImage, wrappedImage, netG);
[netD, stateD] = adamupdate(netD, gradD, stateD, learningRate, beta1, beta2);
gLosses(epoch) = gLosses(epoch) + double(gather(extractdata(lossG)));
dLosses(epoch) = dLosses(epoch) + double(gather(extractdata(lossD)));
end
gLosses(epoch) = gLosses(epoch) / size(unwrapImages, 4);
dLosses(epoch) = dLosses(epoch) / size(unwrapImages, 4);
fprintf(‘Epoch %d, Generator Loss: %.4f, Discriminator Loss: %.4fn’, …
epoch, gLosses(epoch), dLosses(epoch));
end
what should i do to solve this,thanks!function [netG, stateG, lossG] = modelGStep(netG, wrappedImage, realImage, stateG, learningRate, beta1, beta2)
% insure GPU dlarray
if ~isa(wrappedImage, ‘dlarray’)
wrappedImage = dlarray(gpuArray(wrappedImage), ‘SSCB’);
elseif ~strcmp(underlyingType(wrappedImage), ‘gpuArray’)
wrappedImage = dlarray(gpuArray(extractdata(wrappedImage)), ‘SSCB’);
end
if ~isa(realImage, ‘dlarray’)
realImage = dlarray(gpuArray(realImage), ‘SSCB’);
elseif ~strcmp(underlyingType(realImage), ‘gpuArray’)
realImage = dlarray(gpuArray(extractdata(realImage)), ‘SSCB’);
end
wrappedImage = dlarray(gpuArray(wrappedImage), ‘SSCB’);
realImage = dlarray(gpuArray(realImage), ‘SSCB’);
% insure dlfeval use dlgradient
[gradG, lossG] = dlfeval(@dlgradient, lossG, netG.Learnables);
fakeImage = predict(netG, wrappedImage);
lossG = mean((fakeImage – realImage).^2, ‘all’);
[gradG, lossG] = dlgradient(lossG, netG.Learnables);
[netG, stateG] = adamupdate(netG, gradG, stateG, learningRate, beta1, beta2);
return
end
this is my function.
below is my code
for epoch = 1:epochs
for i = 1:size(unwrapImages, 4)
realImage = unwrapImages(:,:,:,i);
wrappedImage = wrappedImages(:,:,:,i);
[netG, stateG, lossG] = modelGStep(netG, wrappedImage, realImage, stateG, learningRate, beta1, beta2);
[lossD, gradD] = modelDStep(netD, realImage, wrappedImage, netG);
[netD, stateD] = adamupdate(netD, gradD, stateD, learningRate, beta1, beta2);
gLosses(epoch) = gLosses(epoch) + double(gather(extractdata(lossG)));
dLosses(epoch) = dLosses(epoch) + double(gather(extractdata(lossD)));
end
gLosses(epoch) = gLosses(epoch) / size(unwrapImages, 4);
dLosses(epoch) = dLosses(epoch) / size(unwrapImages, 4);
fprintf(‘Epoch %d, Generator Loss: %.4f, Discriminator Loss: %.4fn’, …
epoch, gLosses(epoch), dLosses(epoch));
end
what should i do to solve this,thanks! function [netG, stateG, lossG] = modelGStep(netG, wrappedImage, realImage, stateG, learningRate, beta1, beta2)
% insure GPU dlarray
if ~isa(wrappedImage, ‘dlarray’)
wrappedImage = dlarray(gpuArray(wrappedImage), ‘SSCB’);
elseif ~strcmp(underlyingType(wrappedImage), ‘gpuArray’)
wrappedImage = dlarray(gpuArray(extractdata(wrappedImage)), ‘SSCB’);
end
if ~isa(realImage, ‘dlarray’)
realImage = dlarray(gpuArray(realImage), ‘SSCB’);
elseif ~strcmp(underlyingType(realImage), ‘gpuArray’)
realImage = dlarray(gpuArray(extractdata(realImage)), ‘SSCB’);
end
wrappedImage = dlarray(gpuArray(wrappedImage), ‘SSCB’);
realImage = dlarray(gpuArray(realImage), ‘SSCB’);
% insure dlfeval use dlgradient
[gradG, lossG] = dlfeval(@dlgradient, lossG, netG.Learnables);
fakeImage = predict(netG, wrappedImage);
lossG = mean((fakeImage – realImage).^2, ‘all’);
[gradG, lossG] = dlgradient(lossG, netG.Learnables);
[netG, stateG] = adamupdate(netG, gradG, stateG, learningRate, beta1, beta2);
return
end
this is my function.
below is my code
for epoch = 1:epochs
for i = 1:size(unwrapImages, 4)
realImage = unwrapImages(:,:,:,i);
wrappedImage = wrappedImages(:,:,:,i);
[netG, stateG, lossG] = modelGStep(netG, wrappedImage, realImage, stateG, learningRate, beta1, beta2);
[lossD, gradD] = modelDStep(netD, realImage, wrappedImage, netG);
[netD, stateD] = adamupdate(netD, gradD, stateD, learningRate, beta1, beta2);
gLosses(epoch) = gLosses(epoch) + double(gather(extractdata(lossG)));
dLosses(epoch) = dLosses(epoch) + double(gather(extractdata(lossD)));
end
gLosses(epoch) = gLosses(epoch) / size(unwrapImages, 4);
dLosses(epoch) = dLosses(epoch) / size(unwrapImages, 4);
fprintf(‘Epoch %d, Generator Loss: %.4f, Discriminator Loss: %.4fn’, …
epoch, gLosses(epoch), dLosses(epoch));
end
what should i do to solve this,thanks! gannet,phase-wrapping MATLAB Answers — New Questions
Using antenna magnitude data to plot max gain vs frequency
I have a set of antenna data which contains a frequency array, azimuth array, and a matrix of magnitude values; see attached photo for how data is arranged. (I have already read in these data sets from an excel file and placed them into their designated arrays/matrix).
I need to plot max gain vs. frequency from this data without using the antenna tool box. Does anyone know the matlab code to calculate antenna gain from frequency, azimuth, and magnitude?I have a set of antenna data which contains a frequency array, azimuth array, and a matrix of magnitude values; see attached photo for how data is arranged. (I have already read in these data sets from an excel file and placed them into their designated arrays/matrix).
I need to plot max gain vs. frequency from this data without using the antenna tool box. Does anyone know the matlab code to calculate antenna gain from frequency, azimuth, and magnitude? I have a set of antenna data which contains a frequency array, azimuth array, and a matrix of magnitude values; see attached photo for how data is arranged. (I have already read in these data sets from an excel file and placed them into their designated arrays/matrix).
I need to plot max gain vs. frequency from this data without using the antenna tool box. Does anyone know the matlab code to calculate antenna gain from frequency, azimuth, and magnitude? antenna, gain, matlab, plotting MATLAB Answers — New Questions
How do I set up Microsoft Visual Studio 2017 for SLRT?
How do I set up Microsoft Visual Studio 2017 for use with Simulink Real-Time (R2020a and earlier)?How do I set up Microsoft Visual Studio 2017 for use with Simulink Real-Time (R2020a and earlier)? How do I set up Microsoft Visual Studio 2017 for use with Simulink Real-Time (R2020a and earlier)? simulink, real, time, msvc, 2017, real-time, msvs MATLAB Answers — New Questions
How to : Prototype of an Automotive RADAR
i’m currently tryinh to make a reel prototype of an automotive radar using MATLAB/SIMULINK and Raspberry PI.
First developping multiple scenarios using driving scenario designer App, and exporting it to simulink ( scenario and radar blocs).
Then connecting my raspberry PI with my pc so that it will do the signal processing and give back the results ( range and velocety of each object) that will be ploted in MATLAB in reel time.i’m currently tryinh to make a reel prototype of an automotive radar using MATLAB/SIMULINK and Raspberry PI.
First developping multiple scenarios using driving scenario designer App, and exporting it to simulink ( scenario and radar blocs).
Then connecting my raspberry PI with my pc so that it will do the signal processing and give back the results ( range and velocety of each object) that will be ploted in MATLAB in reel time. i’m currently tryinh to make a reel prototype of an automotive radar using MATLAB/SIMULINK and Raspberry PI.
First developping multiple scenarios using driving scenario designer App, and exporting it to simulink ( scenario and radar blocs).
Then connecting my raspberry PI with my pc so that it will do the signal processing and give back the results ( range and velocety of each object) that will be ploted in MATLAB in reel time. radar, sensors, automotive, driving scenario designer, matlab, simulink, raspberry pi, hardware, while loop, real time, simulation, adas, signal processing, digital signal processing, carla, plot MATLAB Answers — New Questions
dim error of dlnetwork predict
Hello everyone, I am a newbie in matlab. I encountered a very basic problem, but I really don’t know how to solve it.
The problem statement is as follows:
My input dlx is 1(C)*13(B)*685(T) dlarray, this means it has 685 time and each time has 13 features. And the "net" dlnetwork is sequence to label, label is 2 classes. I hope output is 2*685, however is 2*13 dlarray.
Please tell me what is my problem?
Thank you very much for coming to see my question and wish you a happy life
Y_predicted = predict(net, dlx);Hello everyone, I am a newbie in matlab. I encountered a very basic problem, but I really don’t know how to solve it.
The problem statement is as follows:
My input dlx is 1(C)*13(B)*685(T) dlarray, this means it has 685 time and each time has 13 features. And the "net" dlnetwork is sequence to label, label is 2 classes. I hope output is 2*685, however is 2*13 dlarray.
Please tell me what is my problem?
Thank you very much for coming to see my question and wish you a happy life
Y_predicted = predict(net, dlx); Hello everyone, I am a newbie in matlab. I encountered a very basic problem, but I really don’t know how to solve it.
The problem statement is as follows:
My input dlx is 1(C)*13(B)*685(T) dlarray, this means it has 685 time and each time has 13 features. And the "net" dlnetwork is sequence to label, label is 2 classes. I hope output is 2*685, however is 2*13 dlarray.
Please tell me what is my problem?
Thank you very much for coming to see my question and wish you a happy life
Y_predicted = predict(net, dlx); dlarray, predict, dlnetwork MATLAB Answers — New Questions
Stimulation of a 3-order system and its control signal in Simulink
hello , I’d like implement the following system in simulink , the dynamics are for a one-link manipulator actuated by brush dc , all the information are provided in the images below ;
the results depicted in the article ;
guide to define kah ;hello , I’d like implement the following system in simulink , the dynamics are for a one-link manipulator actuated by brush dc , all the information are provided in the images below ;
the results depicted in the article ;
guide to define kah ; hello , I’d like implement the following system in simulink , the dynamics are for a one-link manipulator actuated by brush dc , all the information are provided in the images below ;
the results depicted in the article ;
guide to define kah ; control MATLAB Answers — New Questions
Communication with Logitech G29 Steering Wheel?
The G29 Simulink-Block shows a communication error/status (-1) during simulation run.
Logitech driver installed and works (Win10 OS); Realtime Toolbox available; steering wheel connected by USB
Is there something i missed?
Thanks
OMAThe G29 Simulink-Block shows a communication error/status (-1) during simulation run.
Logitech driver installed and works (Win10 OS); Realtime Toolbox available; steering wheel connected by USB
Is there something i missed?
Thanks
OMA The G29 Simulink-Block shows a communication error/status (-1) during simulation run.
Logitech driver installed and works (Win10 OS); Realtime Toolbox available; steering wheel connected by USB
Is there something i missed?
Thanks
OMA g29, simulink, communication, logitech MATLAB Answers — New Questions
what is the peak amplitude of fft?
Hi, I have a theoretical question about FFT. I’m trying to use fft to process some datas that I got with an accelerometer. I’ve already applied a low pass filter to my signal to reduce noise and also applied a flat top window in order to have the most accurate amplitude possible. Doing this I obtain a quite nice spectrum with only one peak at the frequency that I’m interested in, which is what I’m supposed to obtain by the way. Now the question is, and it’s a question that probably comes from my low understanding of FFT, is the FFT peak amplitude supposed to be the same value as the max amplitude of the original signal? Or is it supposed to be something else? FFT is something that I’ve wrapped my head around only in the last few weeks for a uni project without really knowing much about it. Thank you in advance for you help.Hi, I have a theoretical question about FFT. I’m trying to use fft to process some datas that I got with an accelerometer. I’ve already applied a low pass filter to my signal to reduce noise and also applied a flat top window in order to have the most accurate amplitude possible. Doing this I obtain a quite nice spectrum with only one peak at the frequency that I’m interested in, which is what I’m supposed to obtain by the way. Now the question is, and it’s a question that probably comes from my low understanding of FFT, is the FFT peak amplitude supposed to be the same value as the max amplitude of the original signal? Or is it supposed to be something else? FFT is something that I’ve wrapped my head around only in the last few weeks for a uni project without really knowing much about it. Thank you in advance for you help. Hi, I have a theoretical question about FFT. I’m trying to use fft to process some datas that I got with an accelerometer. I’ve already applied a low pass filter to my signal to reduce noise and also applied a flat top window in order to have the most accurate amplitude possible. Doing this I obtain a quite nice spectrum with only one peak at the frequency that I’m interested in, which is what I’m supposed to obtain by the way. Now the question is, and it’s a question that probably comes from my low understanding of FFT, is the FFT peak amplitude supposed to be the same value as the max amplitude of the original signal? Or is it supposed to be something else? FFT is something that I’ve wrapped my head around only in the last few weeks for a uni project without really knowing much about it. Thank you in advance for you help. fft, signal processing MATLAB Answers — New Questions
How do I use multiple inputs in mexcuda?
I found a mexGPUExample.cu and compiled it successfully. In this file, there is only one input and one output. But I’d like to verify multiple inputs and single outputs. Changed codes are as below:
/*
* Example of how to use the mxGPUArray API in a MEX file. This example shows
* how to write a MEX function that takes a gpuArray input and returns a
* gpuArray output, e.g. B=mexFunction(A).
*
* Copyright 2012 The MathWorks, Inc.
*/
#include "mex.h"
#include "gpu/mxGPUArray.h"
#include "matrix.h"
/*
* Device code
*/
void __global__ TimesTwo(double const * const A, double const* const C, double * const B, int const N)
{
/* Calculate the global linear index, assuming a 1-d grid. */
int const i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < N) {
B[i] = 2.0 * A[i];
B[i+N] = 2.0 * C[i];
}
}
/*
* Host code
*/
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, mxArray const *prhs[])
{
/* Declare all variables.*/
mxGPUArray const *A, *C;
mxGPUArray *B;
double const *d_A, *d_C;
double *d_B;
int N;
char const * const errId = "parallel:gpu:mexGPUExample:InvalidInput";
char const * const errMsg = "Invalid input to MEX file.";
/* Choose a reasonably sized number of threads for the block. */
int const threadsPerBlock = 256;
int blocksPerGrid;
/* Initialize the MathWorks GPU API. */
mxInitGPU();
/* Throw an error if the input is not a GPU array. */
if ((nrhs!=1) || !(mxIsGPUArray(prhs[0]))) {
mexErrMsgIdAndTxt(errId, errMsg);
}
A = mxGPUCreateFromMxArray(prhs[0]);
C = mxGPUCreateFromMxArray(prhs[1]);
/*
* Verify that A really is a double array before extracting the pointer.
*/
if (mxGPUGetClassID(A) != mxDOUBLE_CLASS) {
mexErrMsgIdAndTxt(errId, errMsg);
}
/*
* Now that we have verified the data type, extract a pointer to the input
* data on the device.
*/
d_A = (double const *)(mxGPUGetDataReadOnly(A));
d_C = (double const *)(mxGPUGetDataReadOnly(C));
/* Create a GPUArray to hold the result and get its underlying pointer. */
mwSize ndim = 2, dims[2] = {2,4};
B = mxGPUCreateGPUArray(ndim,
dims,
mxGPUGetClassID(A),
mxGPUGetComplexity(A),
MX_GPU_DO_NOT_INITIALIZE);
d_B = (double *)(mxGPUGetData(B));
/*
* Call the kernel using the CUDA runtime API. We are using a 1-d grid here,
* and it would be possible for the number of elements to be too large for
* the grid. For this example we are not guarding against this possibility.
*/
N = (int)(mxGPUGetNumberOfElements(A));
blocksPerGrid = (N + threadsPerBlock – 1) / threadsPerBlock;
TimesTwo<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_C, d_B, N);
/* Wrap the result up as a MATLAB gpuArray for return. */
plhs[0] = mxGPUCreateMxArrayOnGPU(B);
/*
* The mxGPUArray pointers are host-side structures that refer to device
* data. These must be destroyed before leaving the MEX function.
*/
mxGPUDestroyGPUArray(A);
mxGPUDestroyGPUArray(B);
mxGPUDestroyGPUArray(C);
}
There is all changed codes.
And then I’ll type in matlab mexcuda xxx.cu, the matlab tell me compiled successfully. Then I provide two matrix and tansfer them to GPU. Finally, the question is typing xxx(data_gpu1,data_gpu2) will report an error: Invalid input to MEX file. I would like to know how to make xxx.cu recognize multiple inputs.I found a mexGPUExample.cu and compiled it successfully. In this file, there is only one input and one output. But I’d like to verify multiple inputs and single outputs. Changed codes are as below:
/*
* Example of how to use the mxGPUArray API in a MEX file. This example shows
* how to write a MEX function that takes a gpuArray input and returns a
* gpuArray output, e.g. B=mexFunction(A).
*
* Copyright 2012 The MathWorks, Inc.
*/
#include "mex.h"
#include "gpu/mxGPUArray.h"
#include "matrix.h"
/*
* Device code
*/
void __global__ TimesTwo(double const * const A, double const* const C, double * const B, int const N)
{
/* Calculate the global linear index, assuming a 1-d grid. */
int const i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < N) {
B[i] = 2.0 * A[i];
B[i+N] = 2.0 * C[i];
}
}
/*
* Host code
*/
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, mxArray const *prhs[])
{
/* Declare all variables.*/
mxGPUArray const *A, *C;
mxGPUArray *B;
double const *d_A, *d_C;
double *d_B;
int N;
char const * const errId = "parallel:gpu:mexGPUExample:InvalidInput";
char const * const errMsg = "Invalid input to MEX file.";
/* Choose a reasonably sized number of threads for the block. */
int const threadsPerBlock = 256;
int blocksPerGrid;
/* Initialize the MathWorks GPU API. */
mxInitGPU();
/* Throw an error if the input is not a GPU array. */
if ((nrhs!=1) || !(mxIsGPUArray(prhs[0]))) {
mexErrMsgIdAndTxt(errId, errMsg);
}
A = mxGPUCreateFromMxArray(prhs[0]);
C = mxGPUCreateFromMxArray(prhs[1]);
/*
* Verify that A really is a double array before extracting the pointer.
*/
if (mxGPUGetClassID(A) != mxDOUBLE_CLASS) {
mexErrMsgIdAndTxt(errId, errMsg);
}
/*
* Now that we have verified the data type, extract a pointer to the input
* data on the device.
*/
d_A = (double const *)(mxGPUGetDataReadOnly(A));
d_C = (double const *)(mxGPUGetDataReadOnly(C));
/* Create a GPUArray to hold the result and get its underlying pointer. */
mwSize ndim = 2, dims[2] = {2,4};
B = mxGPUCreateGPUArray(ndim,
dims,
mxGPUGetClassID(A),
mxGPUGetComplexity(A),
MX_GPU_DO_NOT_INITIALIZE);
d_B = (double *)(mxGPUGetData(B));
/*
* Call the kernel using the CUDA runtime API. We are using a 1-d grid here,
* and it would be possible for the number of elements to be too large for
* the grid. For this example we are not guarding against this possibility.
*/
N = (int)(mxGPUGetNumberOfElements(A));
blocksPerGrid = (N + threadsPerBlock – 1) / threadsPerBlock;
TimesTwo<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_C, d_B, N);
/* Wrap the result up as a MATLAB gpuArray for return. */
plhs[0] = mxGPUCreateMxArrayOnGPU(B);
/*
* The mxGPUArray pointers are host-side structures that refer to device
* data. These must be destroyed before leaving the MEX function.
*/
mxGPUDestroyGPUArray(A);
mxGPUDestroyGPUArray(B);
mxGPUDestroyGPUArray(C);
}
There is all changed codes.
And then I’ll type in matlab mexcuda xxx.cu, the matlab tell me compiled successfully. Then I provide two matrix and tansfer them to GPU. Finally, the question is typing xxx(data_gpu1,data_gpu2) will report an error: Invalid input to MEX file. I would like to know how to make xxx.cu recognize multiple inputs. I found a mexGPUExample.cu and compiled it successfully. In this file, there is only one input and one output. But I’d like to verify multiple inputs and single outputs. Changed codes are as below:
/*
* Example of how to use the mxGPUArray API in a MEX file. This example shows
* how to write a MEX function that takes a gpuArray input and returns a
* gpuArray output, e.g. B=mexFunction(A).
*
* Copyright 2012 The MathWorks, Inc.
*/
#include "mex.h"
#include "gpu/mxGPUArray.h"
#include "matrix.h"
/*
* Device code
*/
void __global__ TimesTwo(double const * const A, double const* const C, double * const B, int const N)
{
/* Calculate the global linear index, assuming a 1-d grid. */
int const i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < N) {
B[i] = 2.0 * A[i];
B[i+N] = 2.0 * C[i];
}
}
/*
* Host code
*/
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, mxArray const *prhs[])
{
/* Declare all variables.*/
mxGPUArray const *A, *C;
mxGPUArray *B;
double const *d_A, *d_C;
double *d_B;
int N;
char const * const errId = "parallel:gpu:mexGPUExample:InvalidInput";
char const * const errMsg = "Invalid input to MEX file.";
/* Choose a reasonably sized number of threads for the block. */
int const threadsPerBlock = 256;
int blocksPerGrid;
/* Initialize the MathWorks GPU API. */
mxInitGPU();
/* Throw an error if the input is not a GPU array. */
if ((nrhs!=1) || !(mxIsGPUArray(prhs[0]))) {
mexErrMsgIdAndTxt(errId, errMsg);
}
A = mxGPUCreateFromMxArray(prhs[0]);
C = mxGPUCreateFromMxArray(prhs[1]);
/*
* Verify that A really is a double array before extracting the pointer.
*/
if (mxGPUGetClassID(A) != mxDOUBLE_CLASS) {
mexErrMsgIdAndTxt(errId, errMsg);
}
/*
* Now that we have verified the data type, extract a pointer to the input
* data on the device.
*/
d_A = (double const *)(mxGPUGetDataReadOnly(A));
d_C = (double const *)(mxGPUGetDataReadOnly(C));
/* Create a GPUArray to hold the result and get its underlying pointer. */
mwSize ndim = 2, dims[2] = {2,4};
B = mxGPUCreateGPUArray(ndim,
dims,
mxGPUGetClassID(A),
mxGPUGetComplexity(A),
MX_GPU_DO_NOT_INITIALIZE);
d_B = (double *)(mxGPUGetData(B));
/*
* Call the kernel using the CUDA runtime API. We are using a 1-d grid here,
* and it would be possible for the number of elements to be too large for
* the grid. For this example we are not guarding against this possibility.
*/
N = (int)(mxGPUGetNumberOfElements(A));
blocksPerGrid = (N + threadsPerBlock – 1) / threadsPerBlock;
TimesTwo<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_C, d_B, N);
/* Wrap the result up as a MATLAB gpuArray for return. */
plhs[0] = mxGPUCreateMxArrayOnGPU(B);
/*
* The mxGPUArray pointers are host-side structures that refer to device
* data. These must be destroyed before leaving the MEX function.
*/
mxGPUDestroyGPUArray(A);
mxGPUDestroyGPUArray(B);
mxGPUDestroyGPUArray(C);
}
There is all changed codes.
And then I’ll type in matlab mexcuda xxx.cu, the matlab tell me compiled successfully. Then I provide two matrix and tansfer them to GPU. Finally, the question is typing xxx(data_gpu1,data_gpu2) will report an error: Invalid input to MEX file. I would like to know how to make xxx.cu recognize multiple inputs. mexcuda, mexfuctionexample MATLAB Answers — New Questions
Cannot start installer on Fedora Linux – symbol lookup error: UCNV_FROM_U_CALLBACK_ESCAPE_WITH_INVISIBLE_CHARS_72
I’m trying to install Matlab 2024a on Fedora Linux 38 and 39 without desktop environment and for both versions I’m getting error:
./install -inputFile installer_input.txt
matlab_R2024a_Linux/bin/glnxa64/MathWorksProductInstaller: matlab_R2024a_Linux/bin/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.30′ not found (required by /lib64/libicuuc.so.72)
which can be solved by deleting bin/glnxa64/libstdc++.so.6.
After that I’m getting error about symbol lookup error:
./install -inputFile installer_input.txt
2024a/matlab_R2024a_Linux/bin/glnxa64/MathWorksProductInstaller: symbol lookup error: matlab_R2024a_Linux_Fedora/bin/glnxa64/libmwi18n.so: undefined symbol: UCNV_FROM_U_CALLBACK_ESCAPE_WITH_INVISIBLE_CHARS_72
Can it be solved or is it unsolvable incompatibility between system libs and Matlab ones?I’m trying to install Matlab 2024a on Fedora Linux 38 and 39 without desktop environment and for both versions I’m getting error:
./install -inputFile installer_input.txt
matlab_R2024a_Linux/bin/glnxa64/MathWorksProductInstaller: matlab_R2024a_Linux/bin/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.30′ not found (required by /lib64/libicuuc.so.72)
which can be solved by deleting bin/glnxa64/libstdc++.so.6.
After that I’m getting error about symbol lookup error:
./install -inputFile installer_input.txt
2024a/matlab_R2024a_Linux/bin/glnxa64/MathWorksProductInstaller: symbol lookup error: matlab_R2024a_Linux_Fedora/bin/glnxa64/libmwi18n.so: undefined symbol: UCNV_FROM_U_CALLBACK_ESCAPE_WITH_INVISIBLE_CHARS_72
Can it be solved or is it unsolvable incompatibility between system libs and Matlab ones? I’m trying to install Matlab 2024a on Fedora Linux 38 and 39 without desktop environment and for both versions I’m getting error:
./install -inputFile installer_input.txt
matlab_R2024a_Linux/bin/glnxa64/MathWorksProductInstaller: matlab_R2024a_Linux/bin/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.30′ not found (required by /lib64/libicuuc.so.72)
which can be solved by deleting bin/glnxa64/libstdc++.so.6.
After that I’m getting error about symbol lookup error:
./install -inputFile installer_input.txt
2024a/matlab_R2024a_Linux/bin/glnxa64/MathWorksProductInstaller: symbol lookup error: matlab_R2024a_Linux_Fedora/bin/glnxa64/libmwi18n.so: undefined symbol: UCNV_FROM_U_CALLBACK_ESCAPE_WITH_INVISIBLE_CHARS_72
Can it be solved or is it unsolvable incompatibility between system libs and Matlab ones? linux, fedora, symbol lookup error, installer, libmwi18n MATLAB Answers — New Questions
Events Segmentation in EEGLAB
Hello ! I am having an EEG data from more than 100 participants and it consist of 120 events. How can I segment the events into half as I am using eeglab script to process the data ? I want to analyze the first half and second half separately. Thanking you in anticipation.Hello ! I am having an EEG data from more than 100 participants and it consist of 120 events. How can I segment the events into half as I am using eeglab script to process the data ? I want to analyze the first half and second half separately. Thanking you in anticipation. Hello ! I am having an EEG data from more than 100 participants and it consist of 120 events. How can I segment the events into half as I am using eeglab script to process the data ? I want to analyze the first half and second half separately. Thanking you in anticipation. data segmentation, eeglab, erp MATLAB Answers — New Questions
Property with set observable attribute interrupts a current running callback when triggered
I have a drop down callback, which is actioned when the user selects one of the many options. Then this callback is triggered, but along the callback there is a code line where an app.property is assigned a new value, this property has as one of its attributes, the Set observable activated, then the code interrupts the first callback and move to run the listener callback of this app.property. Once this second callback (the listener callback) is finished, Matlab comes back to the earlier callback. But the thing is that I don’t want this to happen, cause the listener callbacks needs something from the first callback which is placed below the line of the property with the Setobservable atribute.
I have set, for the drop down callback, the "Interruptible property" to "off", and the "Busyactions property" to "cancel" as the Matlab documentation suggest (Matlab app designer pdf – page 11-15), but nothing happens.
Any idea what to do with this? I have googled this issue before to look for a similar one and nothing, that is why I rise this question.I have a drop down callback, which is actioned when the user selects one of the many options. Then this callback is triggered, but along the callback there is a code line where an app.property is assigned a new value, this property has as one of its attributes, the Set observable activated, then the code interrupts the first callback and move to run the listener callback of this app.property. Once this second callback (the listener callback) is finished, Matlab comes back to the earlier callback. But the thing is that I don’t want this to happen, cause the listener callbacks needs something from the first callback which is placed below the line of the property with the Setobservable atribute.
I have set, for the drop down callback, the "Interruptible property" to "off", and the "Busyactions property" to "cancel" as the Matlab documentation suggest (Matlab app designer pdf – page 11-15), but nothing happens.
Any idea what to do with this? I have googled this issue before to look for a similar one and nothing, that is why I rise this question. I have a drop down callback, which is actioned when the user selects one of the many options. Then this callback is triggered, but along the callback there is a code line where an app.property is assigned a new value, this property has as one of its attributes, the Set observable activated, then the code interrupts the first callback and move to run the listener callback of this app.property. Once this second callback (the listener callback) is finished, Matlab comes back to the earlier callback. But the thing is that I don’t want this to happen, cause the listener callbacks needs something from the first callback which is placed below the line of the property with the Setobservable atribute.
I have set, for the drop down callback, the "Interruptible property" to "off", and the "Busyactions property" to "cancel" as the Matlab documentation suggest (Matlab app designer pdf – page 11-15), but nothing happens.
Any idea what to do with this? I have googled this issue before to look for a similar one and nothing, that is why I rise this question. setobservable, interruptible, callback interruption, callback listener, matlab, app designer MATLAB Answers — New Questions
Finding MNF for every second inteval
Hello everyone! I’m currently trying to plot the MNF value from every 1 second interval of filtered signal. Here is the code I write:
%% MNF and MDF of signal
%Calculate MNF from every 1 s interval of the filtered signal
start = 0;
stop = 120;
%num_windows = floor(length(psd1) / fs);
interval=ceil((stop-start)/fs);
t_mnf = linspace(start,stop,interval+1);
mnf_s = zeros(1, interval+1);
for i=start:stop
% Check for starting index (avoid going below 1)
start_index = max(1, (i-1)*fs+1);
% Check for ending index (avoid exceeding psd1 length)
end_index = min(length(psd1), i*fs);
%Extract current window data by assuming 1 second window
window_data = psd1(start_index:end_index);
mnf_s(i-start+1)=meanfreq(window_data,fs);
end
figure(5)
plot(t,mnf_s,’-*k’)
xlabel(‘Time (s)’); ylabel(‘MNF (Hz)’)
title(‘MNF’)
The ‘psd1’ variable contains the PSD value of filtered signal. The code doesn’t work. Where could it went wrong?Hello everyone! I’m currently trying to plot the MNF value from every 1 second interval of filtered signal. Here is the code I write:
%% MNF and MDF of signal
%Calculate MNF from every 1 s interval of the filtered signal
start = 0;
stop = 120;
%num_windows = floor(length(psd1) / fs);
interval=ceil((stop-start)/fs);
t_mnf = linspace(start,stop,interval+1);
mnf_s = zeros(1, interval+1);
for i=start:stop
% Check for starting index (avoid going below 1)
start_index = max(1, (i-1)*fs+1);
% Check for ending index (avoid exceeding psd1 length)
end_index = min(length(psd1), i*fs);
%Extract current window data by assuming 1 second window
window_data = psd1(start_index:end_index);
mnf_s(i-start+1)=meanfreq(window_data,fs);
end
figure(5)
plot(t,mnf_s,’-*k’)
xlabel(‘Time (s)’); ylabel(‘MNF (Hz)’)
title(‘MNF’)
The ‘psd1’ variable contains the PSD value of filtered signal. The code doesn’t work. Where could it went wrong? Hello everyone! I’m currently trying to plot the MNF value from every 1 second interval of filtered signal. Here is the code I write:
%% MNF and MDF of signal
%Calculate MNF from every 1 s interval of the filtered signal
start = 0;
stop = 120;
%num_windows = floor(length(psd1) / fs);
interval=ceil((stop-start)/fs);
t_mnf = linspace(start,stop,interval+1);
mnf_s = zeros(1, interval+1);
for i=start:stop
% Check for starting index (avoid going below 1)
start_index = max(1, (i-1)*fs+1);
% Check for ending index (avoid exceeding psd1 length)
end_index = min(length(psd1), i*fs);
%Extract current window data by assuming 1 second window
window_data = psd1(start_index:end_index);
mnf_s(i-start+1)=meanfreq(window_data,fs);
end
figure(5)
plot(t,mnf_s,’-*k’)
xlabel(‘Time (s)’); ylabel(‘MNF (Hz)’)
title(‘MNF’)
The ‘psd1’ variable contains the PSD value of filtered signal. The code doesn’t work. Where could it went wrong? transferred MATLAB Answers — New Questions
Error when importing dll and header files using loadlibraryfunction, about #include
demo:
/*if not(libisloaded(‘ST_MarkDemo_CPP’))
loadlibrary(‘HM_Comm’,’HM_HashuScan.h’)
end
libfunctions(‘HM_HashuScan’);*/
erro:
‘E:X64ST_MarkDemo_CPP_V2.0ST_MarkDemo_CPPHM_HashuScan.h:2:18: fatal error: vector: No such
file or directory
#include <vector>
^
compilation terminated.
///The imported header file "HM_HashuScan.h" exists #include <vector> ;May be matlab can not compile how to solve?
Thanks in advance!demo:
/*if not(libisloaded(‘ST_MarkDemo_CPP’))
loadlibrary(‘HM_Comm’,’HM_HashuScan.h’)
end
libfunctions(‘HM_HashuScan’);*/
erro:
‘E:X64ST_MarkDemo_CPP_V2.0ST_MarkDemo_CPPHM_HashuScan.h:2:18: fatal error: vector: No such
file or directory
#include <vector>
^
compilation terminated.
///The imported header file "HM_HashuScan.h" exists #include <vector> ;May be matlab can not compile how to solve?
Thanks in advance! demo:
/*if not(libisloaded(‘ST_MarkDemo_CPP’))
loadlibrary(‘HM_Comm’,’HM_HashuScan.h’)
end
libfunctions(‘HM_HashuScan’);*/
erro:
‘E:X64ST_MarkDemo_CPP_V2.0ST_MarkDemo_CPPHM_HashuScan.h:2:18: fatal error: vector: No such
file or directory
#include <vector>
^
compilation terminated.
///The imported header file "HM_HashuScan.h" exists #include <vector> ;May be matlab can not compile how to solve?
Thanks in advance! dll, c++, loadlibrary MATLAB Answers — New Questions