【问题标题】:assigning coordinate to a matrix in MATLAB在MATLAB中为矩阵分配坐标
【发布时间】:2015-12-26 13:14:23
【问题描述】:

我正在编写一个 MATLAB 代码,我遇到了一个问题:我有一个 (2N+1)*(2N+1) 矩阵,例如 7*7。我想为其分配坐标系,使矩阵中心是坐标系的原点。我的意思是我想将(0,0) 分配给矩阵的4 行和4 列,将(1,0) 分配给矩阵的4 行和5 列,依此类推。请帮我 提前谢谢你

我想在一个方阵中在所有可能的方向上生成一行 1,如下所示:

 0     0     0     0     0     0     0
 0     0     0     0     0     0     1
 0     0     0     0     0     1     0
 0     0     0     1     0     0     0
 0     1     0     0     0     0     0
 1     0     0     0     0     0     0
 0     0     0     0     0     0     0

矩阵的中心是原点。这条线与水平轴成 30 度。

【问题讨论】:

  • “分配坐标系”是什么意思?这是你可以在脑海中做的概念性事情......你必须具体说明你打算用这个矩阵做什么,这取决于你的坐标系以获得合理的答案......首先我想我会说[X,Y]=meshgrid(-n:n,-n:n) 可能有用,但这真的取决于你接下来打算做什么..
  • 我只想创建一个由零组成的方阵,并在特定方向(30 度)上将其元素设置为 1
  • 我建议您编辑您的问题以添加(手动)完整的示例输出矩阵。否则很难知道你的意思,你是指旋转的1s 的正方形还是1s 的线,如果一条线从哪里开始,30 度到什么?不要在 cmets 中回答这些问题,而是编辑您的答案并添加示例矩阵
  • @bahar 如果您想编辑您的问题以提供更多详细信息,您需要将其放入主要部分,而不是标记为 Edit Summary 的输入块。

标签: matlab matrix


【解决方案1】:

您需要的是从原始矩阵计数系统到自定义系统的简单映射。这里我构建了两个单元格矩阵,分别代表矩阵中元素的坐标。

这里我做了一个简单的映射如下:

for ii = 1:7
    for jj=1:7
        D{ii,jj} = C{ii,jj} - [4,4];
    end
end

通常,对于大小为2*N+1 的矩阵,您将执行以下操作:

for ii = 1:2*N+1
    for jj = 1:2*N+1
        D{ii,jj} = C{ii,jj} - [N+1,N+1];
    end
end

其中C 是原始矩阵,D 是映射矩阵。在你充分理解了我在这里所做的之后,你可以将for-loops替换为更高效的函数,例如bsxfun

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-08
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多