use*_*884 2 matlab loops for-loop matrix
我有一个相当大的矢量命名blender.我提取的n元素blender大于x(不相关).现在我的困难如下:
我试图创建一个(21 x n)矩阵,其中包含blender的每个元素以及之前的10个事物,以及之后的10个事物.
element=find(blender >= 120);
Run Code Online (Sandbox Code Playgroud)
我一直在尝试以下变体:
for i=element(1:end)
Matrix(i)= Matrix(blender(i-10:i+10));
end
Run Code Online (Sandbox Code Playgroud)
然后我想在输入Enter时绘制矩阵的一列.我可以在后面弄清楚这第二部分,但我很感激制作Matrix的一些帮助
谢谢
首先,您可以使用数组的"逻辑索引",它使用逻辑表达式对您的向量进行寻址.有blender = [2, 302, 35, 199, 781, 312, 8],它可能看起来像这样:
>> b_hi = blender(blender>=120)
b_hi =
302 199 781 312
Run Code Online (Sandbox Code Playgroud)
其次,你可以像在中一样连接数组b_padded = [1, 2, b_hi, 3, 4].如果b_hi是列向量,则使用分号而不是逗号.
第三,有一个函数reshape允许您将结果向量转换为矩阵.doc reshape会告诉你细节.例如,要变成b_padded2乘4矩阵,
>> b_matrix = reshape(b_padded, 4, 2)
b_matrix =
1 302 781 3
2 199 312 4
Run Code Online (Sandbox Code Playgroud)
会做.这意味着您可以在没有任何for循环的情况下完成所有工作.注意,转置结果reshape(b_padded, 2, 4)将为您提供另一个可能的2乘4矩阵.你获得矩阵的转置A的A'.你会发现你想要哪一个.