find out negative values and specific values, take it out, record those negative and specific values into a text file
2 views (last 30 days)
Show older comments
given a (52560 x 8 double)
I need to find out the negative values from the last 3 columns, and if the value is 70% more than the sum of last 3 values and next 3 values
then replace the value with the sum of last 3 values and next 3 values divided by 6.
then record those values into a log file(txt file) (X x 3 matrix)
Answers (1)
Ghazwan
on 11 Oct 2022
The following code should do it. Note that because of the rules you have, you have to skip the first and the last three row.
A=[52560 x 8];
X=zeros(1,3);
for ii=4:length(A(:,1))-3
NValues=zeros(1,3);
for jj=1:3
Sum1=sum(A(ii-3:ii-1,5+jj))+sum(A(ii+1:ii+3,5+jj));
Value= (A(ii, 5+jj)-Sum1)/A(ii, 5+jj);
if A(ii, 5+jj)<0 && Value>0.7
NValues(1,jj)=A(ii,5+jj);
A(ii,5+jj)=Sum1/6;
end
end
if sum(abs(NValues))~=0, X=[X;NValues]; end
end
if length(X(:,1))>1, X=X(2:end,:); end
xlswrite('Values.xlsx',X,1);
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!