Add columns to excel file

5 次查看(过去 30 天)
Truc
Truc2022-11-17
回答: William Rose ,2022-11-22
I'm working on 12 lead ECG signals. Currently, the electrocardiogram machine can only measure 8 leads, and the remaining 4 leads are calculated according to the following formula:
Lead III = Lead II - Lead I
avR = - (Lead I + Lead II)/2
avL = Lead I - (Lead II/2)
avF = Lead II - (Lead I/2)
How can I add these 4 leads to the file excel?
For example:
heading_column={'Time','Lead I','Lead II','Lead III','avR','avL','avF','V1','V2','V3','V4','V5','V6'};
Now I have exported 8 leads to file excel. Help me please!
Code:
while get(hObject,'Value')
data = fscanf(s, '%s');
sa = str2num(data);
if(size(sa,2)>8)
ei=ei+1;
ecgdata(ei,:)=[sa(1) sa(2:9)./6116.69333333-685.71];
if(get(handles.pushbutton1,'Value'))
e1=sa(2);
e1=e1./6116.69333333-685.71;%1000*((e1/32768)-1/2)*4.8/3.5;
e2=sa(3);
e2=e2./6116.69333333-685.71;%1000*((e2/32768)-1/2)*2*2.4/3.5;
e3=e2-e1;
temp=sa(1)/1000;
x=[x temp];
ecg1 = [ecg1 e1];
ecg2 = [ecg2 e2];
ecg3 = [ecg3 e3];
end
end
function pushbutton4_Callback(hObject, eventdata, handles)
global ecgdata;
heading_column={'Time','Lead I','Lead II','V1','V2','V3','V4','V5','V6'};
xls_filename= strcat(datestr(now,'yyyy_mm_dd_HH_MM_SS_'),'ECGdata.xls');
xlswrite(xls_filename,heading_column,1,'A3');
xlswrite(xls_filename,ecgdata,1,'A4');
  4 个评论

请先登录,再进行评论。

回答(3 个)

Marcel
Marcel 2022-11-17
编辑:Marcel 2022-11-17
Im not sure if this is going to help you, but im writing data into a table, and i was asked if i could export that to a xls file, so i came up with the following code. Maybe you can adopt it
function exportExcel(app)
newColumn = app.UITable.ColumnName(~cellfun('isempty',app.UITable.ColumnName));
newColumn = reshape(newColumn, 1, size(newColumn, 1));
newData = app.UITable.Data(1,:);
% e.g. C:\path\subfolder\
workingDir = getpref("settings", "workingDir");
xlsFile = workingDir + "\\" + date + "\\report.xls";
% get file length
if isfile(xlsFile)
filelen = length(readcell(xlsFile));
if filelen == 0
writecell([cellstr(newColumn);cellstr(newData)], xlsFile);
else
writecell(cellstr(newData), xlsFile, 'WriteMode','append');
end
else
writecell([cellstr(newColumn);cellstr(newData)], xlsFile);
end
end
My Table

William Rose
William Rose 2022-11-22
It seems to me far easier to add the missing leads in Excel. The attached Excel workbook has columns added for leads III, aVR, aVL, aVF.
The sampling rate is too low to capture some important details. For example, the R wave height in leads I and II varies significantly, because the samples sometimes miss the actual peaks. If the numbers in the Time column are in milliseconds, as I suspect, then the sampling rate is 1/.021=47.6 Hz. The consensus recommendation of the AHA and ACC and Heart Rhythm Society (2007) is a samplling rate of at least 500 Hz, and over 1 kHz, if pacemaker spikes are to be detected.
The interbeat intervals are remarkably constant. Was this patient on a pacemaker? I do not see pacing spikes, but they would be probably missed at the sampling rate used here, since a typical pacing spike is <0.5 msec.
The EKG is normally band-pass filtered, which will make the mean value of each lead be very close to zero. The leads in your file have mean values very different from zero. That may be something you want to consider.

William Rose
William Rose 2022-11-22
Code below reads the data from the .xls file and adds channels III, aVR, aVL, avF.
%% Read data from xls file.
filename='2022_11_22_15_30_55_ECGdata';
filespecIn=[filename,'.xls'];
A=importdata(filespecIn);
%% Compute missing leads.
L3=A.data(:,3)-A.data(:,2); %III=II-I
aVR=-(A.data(:,2)+A.data(:,3))/2; %aVR=-(I+II)/2
aVL=(A.data(:,2)-L3)/2; %aVL=(I-III)/2
aVF=(A.data(:,3)+L3)/2; %aVF=(II+III)/2
%% Insert missing leads into the data array.
% Use standard column ordering: time,I,II,III,aVR,aVL,aVF,V1,...,V6
A.data=[A.data(:,1:3), L3, aVR, aVL, aVF, A.data(:,4:9)];
A.textdata=[A.textdata(1:3),'Lead III','aVR','aVL','aVF',A.textdata(4:9)];
%% Write new xls file.
filespecOut=[filename,'+4a.xls'];
T=array2table(A.data,'VariableNames',A.textdata);
writetable(T,filespecOut)
Try it. Good luck.

标签

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by