For command in function
Show older comments
I have a function attached and would like it to automatically run it with x = 2:4 & y = 2:4, that is, the function to run 8 times & have 8 outputs, with inputs
x =2, y = 2
x = 2, y = 3
x = 2, y = 4
x = 3, y = 2
...
Should I write a 'for' command with the function? It does not seem to work the best this way.
10 Comments
Stephen23
on 3 Sep 2019
"It does not seem to work the best this way. "
You could use a loop, but it is often simpler and more efficient to write vectorized code:
Rik
on 3 Sep 2019
And if you vectorize it, you can use implicit expansion, or use ndgrid to generate all combinations.
Walter Roberson
on 4 Sep 2019
You are attempting to compare a 621 x 1 vector to a 3 x 3 array output by ndgrid
Cside
on 4 Sep 2019
darova
on 4 Sep 2019
What is length of dataset_pfc_tar_57_n1?
Cside
on 4 Sep 2019
darova
on 4 Sep 2019
Each value of (x,y) you want to compare to rowsncolumn?
>> combvec([2:4],[2:4])
ans =
2 3 4 2 3 4 2 3 4
2 2 2 3 3 3 4 4 4
If i understood you correctly output matrix should be of size 621 x 9 ?
Cside
on 4 Sep 2019
Walter Roberson
on 4 Sep 2019
After you use ndgrid to build x y you can
x = permute(x, [3 1 2])
and the same for y. Then assuming R2016b or later, the & would give a 3d result, 621 by 3 by 3
Now take that and .* by dataset and sum along the first dimension. Then sum the result of the & itself along the first dimension to get counts. ./ the two qualities. You should now have a 1 x 3 x 3 array of means.
Accepted Answer
More Answers (0)
Categories
Find more on Matrix Indexing 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!