Azzera filtri
Azzera filtri

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 visualizzazioni (ultimi 30 giorni)
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 Commenti
Aditi
Aditi il 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.

Accedi per commentare.

Risposta accettata

Arun
Arun il 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 Commenti
Walter Roberson
Walter Roberson il 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.

Accedi per commentare.

Più risposte (1)

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

Prodotti


Release

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by