在MATLAB中为矩阵分配坐标

时间:2015-09-29 06:53:43

标签: matlab matrix

我正在写一个MATLAB代码,我遇到了一个问题:我有一个 0x08048524 <+0>: lea 0x4(%esp),%ecx 0x08048528 <+4>: and $0xfffffff0,%esp 0x0804852b <+7>: pushl -0x4(%ecx) 0x0804852e <+10>: push %ebp 0x0804852f <+11>: mov %esp,%ebp 0x08048531 <+13>: push %ecx 0x08048532 <+14>: sub $0x14,%esp 0x08048535 <+17>: mov %ecx,%eax 0x08048537 <+19>: mov 0x4(%eax),%eax 0x0804853a <+22>: add $0x4,%eax 0x0804853d <+25>: mov (%eax),%eax 0x0804853f <+27>: sub $0xc,%esp 0x08048542 <+30>: push %eax 0x08048543 <+31>: call 0x80484c4 <check(char*)> 0x08048548 <+36>: add $0x10,%esp 0x0804854b <+39>: mov %eax,-0xc(%ebp) 0x0804854e <+42>: cmpl $0x4,-0xc(%ebp) 0x08048552 <+46>: jg 0x8048560 <main(int, char**)+60> 0x08048554 <+48>: call 0x80484ab <secret()> 0x08048559 <+53>: mov $0x0,%eax 0x0804855e <+58>: jmp 0x8048565 <main(int, char**)+65> 0x08048560 <+60>: mov $0x0,%eax 0x08048565 <+65>: mov -0x4(%ebp),%ecx 0x08048568 <+68>: leave 0x08048569 <+69>: lea -0x4(%ecx),%esp 0x0804856c <+72>: ret 矩阵,例如(2N+1)*(2N+1)。我想为它分配坐标系,使矩阵中心是坐标系的原点。我的意思是我想将7*7分配给矩阵的行(0,0)和列44分配到矩阵的行(1,0)和列4等等。请帮我 提前谢谢

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

5

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

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

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