我正在写一个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)
和列4
,4
分配到矩阵的行(1,0)
和列4
等等。请帮我
提前谢谢
我想在方形矩阵中生成所有可能方向的一行,如下所示:
5
矩阵的中心是原点。这条直线与水平轴成30度。
答案 0 :(得分:0)
您想要的是从原始矩阵计数系统到自定义矩阵计数系统的简单映射。在这里,我构建了两个单元矩阵,表示矩阵中元素的坐标。
这里我做了一个简单的映射,如下所示:
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
。