matlab中,将二维数组所有值的总和计为单位1,以中心为原点圈出所有值总和84%的数据范围
时间: 2024-09-27 10:16:32 浏览: 36
在MATLAB中,如果你想将二维数组的所有值总和归一化为1,并基于这个总和确定包含84%数据范围的圆圈,可以按照以下步骤操作:
1. **求和并归一化**:
首先,计算数组的总和(`sum_array`),然后除以总和得到归一化的值。
```matlab
sum_value = sum(array);
normalized_array = array / sum_value;
```
2. **确定84%阈值**:
然后找出归一化后数组中达到84%累积总和的位置。这可以通过`cumsum`函数获取累积总和数组,然后找到对应84%的那个索引。
```matlab
threshold_index = find(cumulative_sum > 0.84, 1);
```
3. **创建半径**:
根据中心点和阈值索引,计算出圆心距离左下角的距离作为半径。
```matlab
radius = ceil(min(size(normalized_array))/2) + (threshold_index - size(normalized_array, 1)/2);
```
4. **画出圆圈**:
最后,可以使用`circle`函数在归一化数组上画出这个包含84%数据的圆圈。假设中心点是`(0, 0)`,可以根据半径调整。
```matlab
center_x = center_y = 0;
circle(center_x, center_y, radius, 'FaceColor', 'w');
hold on; % 确保在同一图形中绘制
```
请注意,`circle`函数需要`plotyy`或`imagesc`之类的绘图环境,因为它的坐标系统可能不同于标准笛卡尔坐标。
阅读全文