Use of accumarray function
显示 更早的评论
Hi everybody;
Please find here below my question :
I have 3D available data : Xaxis : AZ, Yaxis : EL, Zaxis : Gain, whose Xaxis & Yaxis data are non regular
1. I need to define some 2D cells in order to slice all the AZ,EL data into regular cells (For instance, size of a cell is +/-0.1° in AZ & EL)
There are a lot of the cell that will be empty as only few cuts measurement are available.
2. As several acquisitions are made, we can get different value of Gain within a same cell region.
I need to average the Gain within each cell when there are different value.
But, I would like to avoid to read all the data one by one, and to fill the cell one by one to average them
I’ve seen the function "accumarray" that seems to solve this kind of question, but i can not really figure out how to use it ...
Could a good soul help me ?. Thanks a lot for your advise
回答(1 个)
For example,
AZ=AZ(:); EL=EL(:); Gain=Gain(:);
AZedges=min(AZ)-0.1:0.2:max(AZ)+0.1; ELedges=min(EL)-0.1:0.2:max(EL)+0.1;
subs=[discretize(AZ,AZedges), discretize(EL,ELedges)];
cellMeans=accumarray(subs,Gain,[],@mean);
4 个评论
Matt J
2019-9-26
Stephane's comment moved here:
Thanks a lot Matt, i've increased the AZedges & ELedges maximum by one step to get discretized the max data and it works very well.
So now i've a 2D array with the Gain means value.
Is there an easy way to come back to initial format (3 columns) by removing all rows that get a "0" in the table, I mean datas with a column AZedges, a column with ELedges and the Mean gain data, but only with the relevant one.
Again i would like to avoid to do it by "crossing" the cell one by one.
Thansk a lot
Matt J
2019-9-26
You can use find(),
[AZbin,ELbin,Gain]=find(cellMeans);
threeColumns=[AZbin,ELbin,Gain];
Matt J
2019-9-30
Stephane Tess' comment move here:
Thanks you very much Matt !
Matt J
2019-9-30
You're welcome, but please Accept-click the answer if it lead to a solutionfor you.
类别
在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
