How do I store every output from every iteration of a for loop in an array?
4 ビュー (過去 30 日間)
古いコメントを表示
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 on
end
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.
0 件のコメント
採用された回答
Cris LaPierre
2018 年 11 月 20 日
The simplest way is to use the indexing to assign the result from each loop to your array.
However, I think you need to create two for loops here:
for ii = 1:N
for j = 1:52
...
end
end
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Data Type Conversion についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!