Hi
I need to solve this assignment please
Biological engineering (or Bioengineering) works by applying the principles of physics, mathematics, and traditional engineering to the complex structures of biology and medicine.
Instead of building bridges or circuits, bioengineers “build” or “program” biological systems to solve problems. It works through several key approaches:
Genetic Programming: Editing DNA sequences to make cells perform specific tasks, such as bacteria producing human insulin.
Tissue Engineering: Using “scaffolds” and living cells to grow functional replacement organs or skin in a lab.
Biomedical Devices: Designing mechanical interfaces like pacemakers, prosthetic limbs, or robotic surgical tools that interact directly with the human body.
System Modeling: Using computer simulations to predict how a new drug will interact with thousands of proteins before it is ever tested on humans.
Essentially, it treats living organisms as hardware and genetic code as software that can be analyzed, repaired, or improved.
Code:
PLZ complete this lab i have added all files and 2 sample labs i need you to write mine must be good at code on matlab and use my result with the name jennah on the files.
%% EMG_OptitrackSync_Biopac_updated
%Updated by Ashley MontJohnson on 3/29/2022
%
% Updated by Erick Nunez on 8/26/2025
% – Updated library location
% – Updated library version
% – Updated mptype value to 104 for MP36A box
% – Updated channelpresent.xml file location
% – Tested with all 4 channels
% – Tested with Duo camera (Sync output: Recording Gate, Inverted)
%
%This code sets up the biopac connection & settings. Then it will ask for a
%time (in seconds) for how long you want the experiment to run. From there
%it will count down and instruct you to hit record in Motive. Once you hit
%record you will see the Figure 1 box pop up with the EMG recording in real
%time. The EMG recording will end and you will be given an elapsed time
%(should be very close to the time you entered). Then you will enter a
%trial name. Then you will be instructed to go to motive and stop da10ta
%collection. IT IS IMPORTANT TO NOTE THAT THE START TIME WILL BE THE SAME
%BUT THE MOTIVE DATA WILL RUN LONGER – YOU MUST CUT THIS OUT IN POST
%PROCESSING OF THE MOTIVE DATA. You know when data collection ended with
%EMG in matlab from your time vector. Don’t forget to export Motive data
%separately!
clear all
clc
close all
ver = computer;
if strcmp(ver,’PCWIN64′)
dll = ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 EducationVC14x64mpdev.dll’;
end
dothdir = ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 Educationmpdev.h’;
mptype = 104; % MP36A
mpmethod = 10; % USB
sn = ‘auto’;
libname = ‘mpdev’;
%warning off MATLAB:loadlibrary:enumexists;
loadlibrary(dll,dothdir);
%% If not using phigets, keep this commented out
% loadphidget21;
% phid = libpointer(‘int32Ptr’);
% calllib(‘phidget21’, ‘CPhidgetBridge_create’, phid);
% calllib(‘phidget21’, ‘CPhidget_open’, phid, -1);
% calllib(‘phidget21’, ‘CPhidget_waitForAttachment’, phid, 500);
% calllib(‘phidget21’, ‘CPhidgetBridge_setEnabled’, phid, 0, 1); % Enables Phidget
% calllib(‘phidget21’, ‘CPhidgetBridge_setEnabled’, phid, 3, 1); % Enables Phidget
% sensorVal = libpointer(‘doublePtr’, 0);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% gain = libpointer(‘CPhidgetBridge_Gain’,’PHIDGET_BRIDGE_GAIN_128′);
% gain.Value = ‘PHIDGET_BRIDGE_GAIN_128’;
% calllib(‘phidget21’, ‘CPhidgetBridge_setGain’,phid,0,gain.Value);
% calllib(‘phidget21’, ‘CPhidgetBridge_setGain’,phid,3,gain.Value);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,0,sensorVal);
% Bias1 = sensorVal.Value;
%% Set up settings on Biopac
sample_rate = 1000; % Sample Rate
channel_mask = [1 1 1 0]; % Channel selection
channels = {‘a111’ ‘a111’ ” ”}; % Channel presets
retval = calllib(libname,’connectMPDev’,mptype,mpmethod,sn) % connect to device
retval = calllib(libname, ‘setSampleRate’, double(1000/sample_rate)) % Set Sample Rate
retval = calllib(libname, ‘setAcqChannels’, channel_mask) % Set Acquisition Channels
retval = calllib(libname, ‘loadXMLPresetFile’, ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 EducationPresetFileschannelpresets.xml’) % load preset file
k = find(channel_mask==1);
for i=1:length(k)
assignin(‘base’,strcat(‘ch’,num2str(k(i)),’data’),[])
retval = calllib(libname, ‘configChannelByPresetID’, k(i)-1, channels{k(i)}) % Configure the channels by preset ID
end
%% Data collection
T = input(‘Enter Collection Time: ‘); % collect total of T secons of data
t = 0.1; % collect t seconds of data per iteration
numValuesToRead = t*sample_rate*sum(channel_mask); % data points per iteration
remaining = T*sample_rate*sum(channel_mask); % remaining data points to acquire
tbuff(1:numValuesToRead) = double(0); % initialize the correct amount of data
numRead = 0;
figure
for q = 3:-1:1
disp(q)
pause(1)
end
count = 0;
% trigger from Biopac
retval = calllib(libname, ‘startMPAcqDaemon’) % Create virtual server
retval = calllib(libname, ‘startAcquisition’) % Start acquisition
%
tic
while remaining >0
count = count+1;
% Phidget Data
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,0,sensorVal);
% ForceTmp1 = sensorVal.Value;
% ForceTmp1 = (ForceTmp1-Bias1).*10;
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,3,sensorVal);
% ForceTmp2 = sensorVal.Value;
% ForceTmp2 = (ForceTmp2-Bias2).*10;
% Force2 = [Force2;ForceTmp2];
% Force(count) = ForceTmp1;
[retval, tbuff, numRead] = calllib(libname, ‘receiveMPData’,tbuff, numValuesToRead, numRead); % get data
pause(.05); clf; hold on
remaining = remaining – numRead;
% subplot(2,1,1)
for i=1:sum(channel_mask)
assignin(‘base’,strcat(‘ch’,num2str(k(i)),’data’),[eval(strcat(‘ch’,num2str(k(i)),’data’)) tbuff(i:sum(channel_mask):length(tbuff))]);
plot(eval(strcat(‘ch’,num2str(k(i)),’data’)))
end
time(count) = toc;
xlabel(‘Time’)
ylabel(‘EMG’);
% subplot(2,1,2)
% plot(time,Force)
% xlabel(‘Time’)
% ylabel(‘Force’);
hold off
end
toc
%% end of data collection.
fname = input(‘Enter a trial name: ‘,’s’);
save(fname,’ch1data’,’ch2data’,’ch3data’,’time’)
% calllib(‘phidget21’, ‘CPhidget_close’, phid);
% calllib(‘phidget21’, ‘CPhidget_delete’, phid);
retval = calllib(libname, ‘stopAcquisition’); % stop acquisition
calllib(libname, ‘disconnectMPDev’); % disconnect device
unloadlibrary(libname) % unload library
Code:
PLZ complete this lab i have added all files and 2 sample labs i need you to write mine must be good at code on matlab and use my result with the name jennah on the files.
%% EMG_OptitrackSync_Biopac_updated
%Updated by Ashley MontJohnson on 3/29/2022
%
% Updated by Erick Nunez on 8/26/2025
% – Updated library location
% – Updated library version
% – Updated mptype value to 104 for MP36A box
% – Updated channelpresent.xml file location
% – Tested with all 4 channels
% – Tested with Duo camera (Sync output: Recording Gate, Inverted)
%
%This code sets up the biopac connection & settings. Then it will ask for a
%time (in seconds) for how long you want the experiment to run. From there
%it will count down and instruct you to hit record in Motive. Once you hit
%record you will see the Figure 1 box pop up with the EMG recording in real
%time. The EMG recording will end and you will be given an elapsed time
%(should be very close to the time you entered). Then you will enter a
%trial name. Then you will be instructed to go to motive and stop da10ta
%collection. IT IS IMPORTANT TO NOTE THAT THE START TIME WILL BE THE SAME
%BUT THE MOTIVE DATA WILL RUN LONGER – YOU MUST CUT THIS OUT IN POST
%PROCESSING OF THE MOTIVE DATA. You know when data collection ended with
%EMG in matlab from your time vector. Don’t forget to export Motive data
%separately!
clear all
clc
close all
ver = computer;
if strcmp(ver,’PCWIN64′)
dll = ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 EducationVC14x64mpdev.dll’;
end
dothdir = ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 Educationmpdev.h’;
mptype = 104; % MP36A
mpmethod = 10; % USB
sn = ‘auto’;
libname = ‘mpdev’;
%warning off MATLAB:loadlibrary:enumexists;
loadlibrary(dll,dothdir);
%% If not using phigets, keep this commented out
% loadphidget21;
% phid = libpointer(‘int32Ptr’);
% calllib(‘phidget21’, ‘CPhidgetBridge_create’, phid);
% calllib(‘phidget21’, ‘CPhidget_open’, phid, -1);
% calllib(‘phidget21’, ‘CPhidget_waitForAttachment’, phid, 500);
% calllib(‘phidget21’, ‘CPhidgetBridge_setEnabled’, phid, 0, 1); % Enables Phidget
% calllib(‘phidget21’, ‘CPhidgetBridge_setEnabled’, phid, 3, 1); % Enables Phidget
% sensorVal = libpointer(‘doublePtr’, 0);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% gain = libpointer(‘CPhidgetBridge_Gain’,’PHIDGET_BRIDGE_GAIN_128′);
% gain.Value = ‘PHIDGET_BRIDGE_GAIN_128’;
% calllib(‘phidget21’, ‘CPhidgetBridge_setGain’,phid,0,gain.Value);
% calllib(‘phidget21’, ‘CPhidgetBridge_setGain’,phid,3,gain.Value);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,0,sensorVal);
% Bias1 = sensorVal.Value;
%% Set up settings on Biopac
sample_rate = 1000; % Sample Rate
channel_mask = [1 1 1 0]; % Channel selection
channels = {‘a111’ ‘a111’ ” ”}; % Channel presets
retval = calllib(libname,’connectMPDev’,mptype,mpmethod,sn) % connect to device
retval = calllib(libname, ‘setSampleRate’, double(1000/sample_rate)) % Set Sample Rate
retval = calllib(libname, ‘setAcqChannels’, channel_mask) % Set Acquisition Channels
retval = calllib(libname, ‘loadXMLPresetFile’, ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 EducationPresetFileschannelpresets.xml’) % load preset file
k = find(channel_mask==1);
for i=1:length(k)
assignin(‘base’,strcat(‘ch’,num2str(k(i)),’data’),[])
retval = calllib(libname, ‘configChannelByPresetID’, k(i)-1, channels{k(i)}) % Configure the channels by preset ID
end
%% Data collection
T = input(‘Enter Collection Time: ‘); % collect total of T secons of data
t = 0.1; % collect t seconds of data per iteration
numValuesToRead = t*sample_rate*sum(channel_mask); % data points per iteration
remaining = T*sample_rate*sum(channel_mask); % remaining data points to acquire
tbuff(1:numValuesToRead) = double(0); % initialize the correct amount of data
numRead = 0;
figure
for q = 3:-1:1
disp(q)
pause(1)
end
count = 0;
% trigger from Biopac
retval = calllib(libname, ‘startMPAcqDaemon’) % Create virtual server
retval = calllib(libname, ‘startAcquisition’) % Start acquisition
%
tic
while remaining >0
count = count+1;
% Phidget Data
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,0,sensorVal);
% ForceTmp1 = sensorVal.Value;
% ForceTmp1 = (ForceTmp1-Bias1).*10;
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,3,sensorVal);
% ForceTmp2 = sensorVal.Value;
% ForceTmp2 = (ForceTmp2-Bias2).*10;
% Force2 = [Force2;ForceTmp2];
% Force(count) = ForceTmp1;
[retval, tbuff, numRead] = calllib(libname, ‘receiveMPData’,tbuff, numValuesToRead, numRead); % get data
pause(.05); clf; hold on
remaining = remaining – numRead;
% subplot(2,1,1)
for i=1:sum(channel_mask)
assignin(‘base’,strcat(‘ch’,num2str(k(i)),’data’),[eval(strcat(‘ch’,num2str(k(i)),’data’)) tbuff(i:sum(channel_mask):length(tbuff))]);
plot(eval(strcat(‘ch’,num2str(k(i)),’data’)))
end
time(count) = toc;
xlabel(‘Time’)
ylabel(‘EMG’);
% subplot(2,1,2)
% plot(time,Force)
% xlabel(‘Time’)
% ylabel(‘Force’);
hold off
end
toc
%% end of data collection.
fname = input(‘Enter a trial name: ‘,’s’);
save(fname,’ch1data’,’ch2data’,’ch3data’,’time’)
% calllib(‘phidget21’, ‘CPhidget_close’, phid);
% calllib(‘phidget21’, ‘CPhidget_delete’, phid);
retval = calllib(libname, ‘stopAcquisition’); % stop acquisition
calllib(libname, ‘disconnectMPDev’); % disconnect device
unloadlibrary(libname) % unload library
Code:
PLZ complete this lab i have added all files and 2 sample labs i need you to write mine must be good at code on matlab and use my result with the name jennah on the files.
%% EMG_OptitrackSync_Biopac_updated
%Updated by Ashley MontJohnson on 3/29/2022
%
% Updated by Erick Nunez on 8/26/2025
% – Updated library location
% – Updated library version
% – Updated mptype value to 104 for MP36A box
% – Updated channelpresent.xml file location
% – Tested with all 4 channels
% – Tested with Duo camera (Sync output: Recording Gate, Inverted)
%
%This code sets up the biopac connection & settings. Then it will ask for a
%time (in seconds) for how long you want the experiment to run. From there
%it will count down and instruct you to hit record in Motive. Once you hit
%record you will see the Figure 1 box pop up with the EMG recording in real
%time. The EMG recording will end and you will be given an elapsed time
%(should be very close to the time you entered). Then you will enter a
%trial name. Then you will be instructed to go to motive and stop da10ta
%collection. IT IS IMPORTANT TO NOTE THAT THE START TIME WILL BE THE SAME
%BUT THE MOTIVE DATA WILL RUN LONGER – YOU MUST CUT THIS OUT IN POST
%PROCESSING OF THE MOTIVE DATA. You know when data collection ended with
%EMG in matlab from your time vector. Don’t forget to export Motive data
%separately!
clear all
clc
close all
ver = computer;
if strcmp(ver,’PCWIN64′)
dll = ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 EducationVC14x64mpdev.dll’;
end
dothdir = ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 Educationmpdev.h’;
mptype = 104; % MP36A
mpmethod = 10; % USB
sn = ‘auto’;
libname = ‘mpdev’;
%warning off MATLAB:loadlibrary:enumexists;
loadlibrary(dll,dothdir);
%% If not using phigets, keep this commented out
% loadphidget21;
% phid = libpointer(‘int32Ptr’);
% calllib(‘phidget21’, ‘CPhidgetBridge_create’, phid);
% calllib(‘phidget21’, ‘CPhidget_open’, phid, -1);
% calllib(‘phidget21’, ‘CPhidget_waitForAttachment’, phid, 500);
% calllib(‘phidget21’, ‘CPhidgetBridge_setEnabled’, phid, 0, 1); % Enables Phidget
% calllib(‘phidget21’, ‘CPhidgetBridge_setEnabled’, phid, 3, 1); % Enables Phidget
% sensorVal = libpointer(‘doublePtr’, 0);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% gain = libpointer(‘CPhidgetBridge_Gain’,’PHIDGET_BRIDGE_GAIN_128′);
% gain.Value = ‘PHIDGET_BRIDGE_GAIN_128’;
% calllib(‘phidget21’, ‘CPhidgetBridge_setGain’,phid,0,gain.Value);
% calllib(‘phidget21’, ‘CPhidgetBridge_setGain’,phid,3,gain.Value);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,0,sensorVal);
% Bias1 = sensorVal.Value;
%% Set up settings on Biopac
sample_rate = 1000; % Sample Rate
channel_mask = [1 1 1 0]; % Channel selection
channels = {‘a111’ ‘a111’ ” ”}; % Channel presets
retval = calllib(libname,’connectMPDev’,mptype,mpmethod,sn) % connect to device
retval = calllib(libname, ‘setSampleRate’, double(1000/sample_rate)) % Set Sample Rate
retval = calllib(libname, ‘setAcqChannels’, channel_mask) % Set Acquisition Channels
retval = calllib(libname, ‘loadXMLPresetFile’, ‘C:Program FilesBIOPAC Systems, IncBIOPAC Hardware API 2.2.5 EducationPresetFileschannelpresets.xml’) % load preset file
k = find(channel_mask==1);
for i=1:length(k)
assignin(‘base’,strcat(‘ch’,num2str(k(i)),’data’),[])
retval = calllib(libname, ‘configChannelByPresetID’, k(i)-1, channels{k(i)}) % Configure the channels by preset ID
end
%% Data collection
T = input(‘Enter Collection Time: ‘); % collect total of T secons of data
t = 0.1; % collect t seconds of data per iteration
numValuesToRead = t*sample_rate*sum(channel_mask); % data points per iteration
remaining = T*sample_rate*sum(channel_mask); % remaining data points to acquire
tbuff(1:numValuesToRead) = double(0); % initialize the correct amount of data
numRead = 0;
figure
for q = 3:-1:1
disp(q)
pause(1)
end
count = 0;
% trigger from Biopac
retval = calllib(libname, ‘startMPAcqDaemon’) % Create virtual server
retval = calllib(libname, ‘startAcquisition’) % Start acquisition
%
tic
while remaining >0
count = count+1;
% Phidget Data
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,0,sensorVal);
% ForceTmp1 = sensorVal.Value;
% ForceTmp1 = (ForceTmp1-Bias1).*10;
% calllib(‘phidget21’, ‘CPhidgetBridge_getBridgeValue’,phid,3,sensorVal);
% ForceTmp2 = sensorVal.Value;
% ForceTmp2 = (ForceTmp2-Bias2).*10;
% Force2 = [Force2;ForceTmp2];
% Force(count) = ForceTmp1;
[retval, tbuff, numRead] = calllib(libname, ‘receiveMPData’,tbuff, numValuesToRead, numRead); % get data
pause(.05); clf; hold on
remaining = remaining – numRead;
% subplot(2,1,1)
for i=1:sum(channel_mask)
assignin(‘base’,strcat(‘ch’,num2str(k(i)),’data’),[eval(strcat(‘ch’,num2str(k(i)),’data’)) tbuff(i:sum(channel_mask):length(tbuff))]);
plot(eval(strcat(‘ch’,num2str(k(i)),’data’)))
end
time(count) = toc;
xlabel(‘Time’)
ylabel(‘EMG’);
% subplot(2,1,2)
% plot(time,Force)
% xlabel(‘Time’)
% ylabel(‘Force’);
hold off
end
toc
%% end of data collection.
fname = input(‘Enter a trial name: ‘,’s’);
save(fname,’ch1data’,’ch2data’,’ch3data’,’time’)
% calllib(‘phidget21’, ‘CPhidget_close’, phid);
% calllib(‘phidget21’, ‘CPhidget_delete’, phid);
retval = calllib(libname, ‘stopAcquisition’); % stop acquisition
calllib(libname, ‘disconnectMPDev’); % disconnect device
unloadlibrary(libname) % unload library
Attached Files (PDF/DOCX): Copy of BME384 Lab 2.pdf, ChannelPresetID.docx, index.pdf, Lab_2_S26.docx, The_ABC_of_EMG.pdf
Note: Content extraction from these files is restricted, please review them manually.