I have a code that extracts some parameters from some data in the following way:
LasingThreshold=0.1;% %---------Convert xlsx to mat - only need to use once----------------------
files = dir('LIV Data*.xlsx'); for k = 1:numel(files) [num,text,raw] = xlsread(files(k).name); [dummy, myName] = fileparts(files(k).name); save(myName) end %--------------------------------------------------------------------------
D = uigetdir cd(D);S = dir(fullfile(D,'LIV Data T= *.mat')); % Makes a structure with all files
N = numel(S); % Counts number of files
CM = cool(N); % set colormap
fig1 = figure;Pdissarray = zeros(N,52)for ii = 1:N, j = 1:52; T = load(fullfile(D,S(ii).name)); % Load each file as a structure
I = T.num(3:end,1); % Extract each parameter from full file and ignore first two data points
V = T.num(3:end,2); P = T.num(3:end,3); Pelec = V.*I; Pdiss = Pelec-P; Pdissarray(ii,j) = Pdissarray(ii,j)+Pdiss(ii) DataPoints = length(I); k = find(P>LasingThreshold,1); fit = polyfit(I(k:round(DataPoints/2)),P(k:round(DataPoints/2)),1); %Need value of P to be greater than the laser threshold - this should be done better eventually
fitplot = polyval(fit, I); slope(ii) = fit(1); iTh(ii) = -fit(2)/fit(1); subplot(1,2,1); plot(I,P,'.','markers',5,'color',CM(ii,:)) plot(I,fitplot,'-.','color',CM(ii,:)) ylim([0 4]); xlabel('Current (mA)') ylabel('Power (mW)') hold on subplot(1,2,2); plot(I,V,'.-','markers',4,'color',CM(ii,:)) xlabel('Current (mA)') ylabel('Voltage (V)') hold onend
I'm having a problem with Pdissarray – I want it to store all of the values of Pdiss for each file. I'm currently trying to put this into a single array but that doesn't have to be the way I do it, I just need to retain the values in some form. Currently it is just taking the final value of Pdiss for each file and repeating it over the array. I have included two files with the code.
Best Answer