Borrar filtros
Borrar filtros

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 visualizaciones (últimos 30 días)
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 comentarios
Aditi
Aditi el 1 de Nov. de 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.
Siddharth Bhutiya
Siddharth Bhutiya el 1 de Nov. de 2023
Can you attach the DATA.xlsx? As KSSV mentioned there might be ways to simplify the code a bit.

Iniciar sesión para comentar.

Respuesta aceptada

Arun
Arun el 1 de Nov. de 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 comentarios
Walter Roberson
Walter Roberson el 2 de Nov. de 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.

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 1 de Nov. de 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)

Etiquetas

Productos


Versión

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by