Clear Filters
Clear Filters

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 views (last 30 days)
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 Comments
Aditi
Aditi on 1 Nov 2023
yes but the output matrix is only showing the last value.
it is my first time using matlab so if you could help with making a simpler code for this problem.

Sign in to comment.

Accepted Answer

Arun
Arun on 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 Comments
Walter Roberson
Walter Roberson on 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.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 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)

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!