Manipulating multiple datasets at once and exporting properly
조회 수: 1 (최근 30일)
이전 댓글 표시
I have a dataset that I am trying to manipulate. Basically, I have 28 excel files, all with 10 columns of data. I'd like to read in all excel files, perform the same operations on them, and write to a file the data curves for each operation. I'd also like figures displaying the data and associated curves.
These are the opeartions I need to perform:
- Perform an operation on column C and D: (102/((C1/D1)-1)) - resistance (R)
- Perform an operation on column G: G/0.002 - pressure (P)
- Find index start and finish of loading portion, when C rises above threshold (start), and then drops down and rises again to same threshold (finish)
- FInd index of minimum C
- Calculate the average resistance during loading (using the time markers from the voltage-time curve) Average Change in Resistance (AR) = (Rstart– Rmin voltage)/(Duration of impact)
- Find a curve of formula y=a*x^b+c (where y = P, and x=R) from index start to index min voltage of pressure versus resistance, for each of the 28 files
- Show graphs of curves
- Output a, b, c variables and Rstart, Rmin, R fin, AR for each curve to .txt file
Can anyone please tell me where to start? I'd like some guidance as for how to manipulate so much data at once, and how to output the data correctly. This is the code I have so far:
folder = 'C:\Users\julia\Desktop\jan2019';
filetype='*.xls';
fsensors=fullfile(folder,filetype);
d=dir(fsensors);
fw= fopen('C:\Users\julia\Documents\MATLAB\jan_calibrations\calibrationcurves.txt' , 'w' );
for k = 1:numel(d); %length of source files
data{k}=xlsread(fullfile(folder,d(k).name));
start=1;
close all ;
vel = d(:,1);
accel = d(:,2);
ext_volt = d(:,3);
sens_volt = d(:,4);
lc_fz = d(:,7);
voltage = (ext_v/sens_v);
pressure = (lc_fz)/(.04*.05); %for sens8
for i=1:length(voltage)
resistance(i)=(102/(1/voltage(i)-1));
if pressure(i)>.5E4 %4E4
start(j)=i;
j=j+1;
end
end
x=resistance(start(1):end);
y=pressure(start(1):end);
figure('Position' , [50, 50, 1049, 895]);
s=plot(resistance,pressure,'linewidth' , 3 , 'color' , 'r' );
xlim([0,200])
xlabel('Resistance (\Omega)' , 'fontsize' , fs, 'FontName' , 'Times' );
ylabel ('Pressure (Pa)' ,'fontsize' , fs, 'FontName' , 'Times' );
ylim([0, 3.5E5])
set(gca, 'fontsize' , fs, 'FontName' , 'Times' )
f=ezfit(x,y,'((a*x^b)+c);a=6E6; b=-1.5; c=20000' ); %(a+(a*x))*exp(-b*x); a=1200')'');
showfit(f, 'dispeqboxmode' , 'off' , 'boxlocation' , [0.60 0.81 0.1 0.1], 'fitlinestyle' , '--' ,'fitcolor' , 'k' , 'fitlinewidth' , 3);
legend([s], 'Sensor', '- Fit', 'fontsize', fs, 'FontName', 'Times')
fprintf(fw,'%d %d %d %d %d\n' ,f.m(1), f.m(2), f.m(3), f.r, area); %writes variables as integers, in that order
end
댓글 수: 0
답변 (1개)
halil
2019년 8월 19일
Hi
Sorry cant help but I have the same question as the one you made sometimes ago. did you get any reply. my email khalil.khalili@hest.ethz.ch please get back to me.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Spreadsheets에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!