How do you write a loop for a variable that will list 6 rows but you want the equation to apply for those 6 rows and 30 rows after each of them

1 view (last 30 days)
the variable "RA4" contains 6 rows that indicate where a perturbation starts.
RA4 = 5721, 51164, 69680, 98014, 118377, 130204.
I am trying to write a loop that will apply the
XError equation -> abs(COMArray(:,1))-abs(New_COM(:,1));
to each of those RA4 rows and the next 30 for each. Meaning (5721:5751), etc. How can I write that?
  1 Comment
David Hill
David Hill on 2 Aug 2022
Hard to understand without an example. Not sure what you mean by applying the XError equation to each row.
abs(COMArray(:,1))-abs(New_COM(:,1));%this looks like it is applying to a column
%RA4(5721,:) would be the row, take that row (I don't know the size of the
%row) and apply it how to the XError equation?

Sign in to comment.

Answers (1)

dpb
dpb on 3 Aug 2022
nAddLines=30;
for i=1:numel(RA4)
ix1=RA4(i);
ix2=ix1+nAddLines;
XError(?)=abs(COMArray(ix1:ix2,1))-abs(New_COM(ix1:ix2,1));
end
You'll have to have some indexing expression to compute a place to put the results -- and how to keep track of which part goes where...that's that the "?" placeholder is for--there's where you need an expression -- or you could just have a cell array each of which cells contains the results for each iteration as the quick 'n dirty way out.
The above applies the calculation only to a first column of some array as in your sample code snippet.

Tags

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!