首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能用零填充,所以我可以用元素2矩阵相乘(matlab)。

不能用零填充,所以我可以用元素2矩阵相乘(matlab)。
EN

Stack Overflow用户
提问于 2016-05-19 02:35:19
回答 2查看 150关注 0票数 0

为了简单起见,我得到了两个矩阵,A (逆滤波器)和B (频域图像)。

代码语言:javascript
复制
A=ones(20,20);
B=zeros(33,33);

我想把它们乘以这样的元素:

代码语言:javascript
复制
C=A.*B;

为了信号处理的目的(在频域找到乘积,然后再变换回来(图像恢复)。

要做到这一点,我应该放置最小的数组,使其为A[33,33],但当我这样做时

代码语言:javascript
复制
A=padarray(A,[7,7]);

这使得size(A)=(44,44);,然后像这样的东西

代码语言:javascript
复制
A=A(1:33,1:33); 

我的形象不是居中的,我不可能有预期的结果。

怎样才能使图像A中心化,然后与B相乘?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-19 06:20:31

使用fftshift怎么样?

代码语言:javascript
复制
pA = fftshift(A);
pA(size(B,1),size(B,2)) = 0;  %// fill with zeros, high frequencies
pA = ifftshift(pA); 
票数 0
EN

Stack Overflow用户

发布于 2016-05-19 06:34:04

你可以和前填充和后填充一起去

代码语言:javascript
复制
A = ones(20,20);
B=zeros(33,33);
A = padarray(A,7,'symmetric','pre');
A = padarray(A',7,'symmetric','pre');
A = padarray(A,6,'symmetric','post');
A = padarray(A',6,'symmetric','post');
C = A.*B;

我只是按对称做了填充物。因为A的所有元素都是1,所以根据对称性,它确实把它和其他元素放在一起。你可以尝试不同,只需要写

代码语言:javascript
复制
help padarray

在命令提示符中,检查"padarray“在不同情况下的实际工作方式,也适用于您的代码,我用7填充最上面的pre,用6表示post,使其变为13。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37313024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档