matlab - 将矩阵的部分分离为变量 - MATLAB

标签 matlab

numSeg = 10;        %Set number of segments
wSeg = 10;      %Set segment width
x = ones(1,numSeg*wSeg);

为每个创建的段自动提供变量的最有效方法是什么?例如:

bin1 = x(1:10)
bin2 = x(11:20)

等等。

最终我将随机生成一个数字(1:numSeg)来选择一个垃圾箱,然后更改它:

enter image description here

我主要关注如何能够使用变量名称或数字(例如 bin 编号)来引用矩阵的特定区域,以便我可以进行更改 - 这只不过是乘以所选的值'x' 内的区域由另一个 wSeg 宽的矩阵组成。我不想手动指定每个 bin1、bin2、bin3 等。

最佳答案

for segment_id = 1:numSeg
    bin = x((segment_id-1)*wSeg+1 : segment_id*wSeg) %// x values for each segment. 
         %// So, for segment_id = 1, you would have bin as x(1:10)
         %//     for segment_id = 2, you would have bin as x(11:20)
         %// ........
         %//     for segment_id = 10, you would have bin as x(91:100) 
end

因此,您可以使用 segment_id = randi([1 numSeg]) 获取随机的segment_id,然后使用 -

bin = x((segment_id-1)*wSeg+1 : segment_id*wSeg)

获取该特定随机段的 bin 值。

作为示例,我输入 -

segment_id = randi([1 numSeg])

我得到了-

segment_id =
     7

然后,我使用 bin = x((segment_id-1)*wSeg+1 :egment_id*wSeg) 给了我 -

ans =
    61    62    63    64    65    66    67    68    69    70

关于matlab - 将矩阵的部分分离为变量 - MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084473/

相关文章:

matlab - 在 Matlab 中创建稀疏 block 对角矩阵

MATLAB 尝试捕捉问题

matlab - 通过 "List of Points"访问矩阵元素

Matlab Gamma 函数 : I get Inf for large values

c# 应用程序运行 matlab 错误使用 cd 太多输入参数

matlab - 在 MATLAB 中求解指数方程

matlab - sprintf ('%d' ,A) - '0' 是如何工作的?

Matlab - 找到两个椭圆之间的交点 - 牛顿法 - 奇怪的结果

Matlab 部署 : add files to source control?

matlab - MATLAB 中的向量和矩阵有什么区别?