i have written a while loop which displays 'yes' or 'no' if the difference is less than 0.5 for a given problem. how can i write this output into an excel sheet.
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
this is the code i have used. it gives the desired result in the command window but i need it to write the output into an excel sheet. how can i incorporate that?
data=readtable("DATA.xlsx");
X=table2array(data);
i=1;
j=2;
while i<57
M=max(X(:,i));
n = mean(X(M-50:end,j),'omitnan');
m= M-50;
while m<M+1
y=X(m,j);
z=((y-n)/n)*100;
disp(z)
if (0.5>z) && (-0.5<z)
disp("YES")
else
disp("NO")
end
m = m+1;
end
i=i+2;
j=j+2;
end
3 commentaires
Siddharth Bhutiya
le 1 Nov 2023
Can you attach the DATA.xlsx? As KSSV mentioned there might be ways to simplify the code a bit.
Réponse acceptée
Arun
le 1 Nov 2023
Hey Aditi,
One possible way to do so is:
data=readtable("DATA.xlsx");
X=table2array(data);
i=1;
j=2;
while i<57
M=max(X(:,i));
n = mean(X(M-50:end,j),'omitnan');
m= M-50;
counterToPrint=1; %increment it for each row
% Specify the file name and sheet name
filename = 'example.xlsx';
sheet = 'Sheet1';
while m<M+1
y=X(m,j)
z=((y-n)/n)*100;
disp(z)
%location to write
location = ['A' num2str(counterToPrint)]; % Use the column accordingly
if (0.5>z) && (-0.5<z)
xlswrite(filename,{"Yes"}, sheet, location); %write to the sheet
else
xlswrite(filename,{"No"}, sheet, location); %write to the sheet
end
counterToPrint = counterToPrint + 1;
m = m+1;
end
i=i+2;
j=j+2;
end
Hope this helps.
17 commentaires
Walter Roberson
le 2 Nov 2023
As a matter of efficiency, but not a change in functionality:
data = readtable('checking3.xlsx');
display = data(data.Var2=="no",:)
This will give the same result as your find() version, just a little faster.
It should give you just the rows that match "no" in the second column.... assuming the xlsx does not have any header.
Plus de réponses (1)
Walter Roberson
le 1 Nov 2023
data=readtable("DATA.xlsx");
X=table2array(data);
i=1;
j=2;
decisions = strings(0);
decision_count = 0;
while i<57
M=max(X(:,i));
n = mean(X(M-50:end,j),'omitnan');
m= M-50;
while m<M+1
y=X(m,j);
z=((y-n)/n)*100;
disp(z)
decision_count = decision_count + 1;
if (0.5>z) && (-0.5<z)
decisions(decision_count) = "YES";
disp("YES")
else
decisions(decisions_count) = "NO";
disp("NO")
end
m = m+1;
end
i=i+2;
j=j+2;
end
writematrix(decisions, FILENAME)
0 commentaires
Voir également
Catégories
En savoir plus sur Spreadsheets dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!