matlab怎样求卷积?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎样求卷积?相关的知识,希望对你有一定的参考价值。

参考技术A function
[f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
%f:卷积积分f(t)对应的非零样值向量
%k:f(t)的对应时间向量
%f1:f1(t)非零样值向量
%f2:f2(t)的非零样值向量
%k1:f1(t)的对应时间向量
%k2:f2(t)的对应时间向量
%p:取样时间间隔
f=conv(f1,f2);
f=f*p;
k0=k1(1)+k2(1);
k3=length(f1)+length(f2)-2;
k=k0:p:k0+k3*p;
subplot(2,2,1)
plot(k1,f1);
title('f1(t)');
xlabel('t');
ylabel('f1(t)');
subplot(2,2,2);
plot(k2,f2);
title('f2(t)')
subplot(2,2,3)
plot(k,f);
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h);
title('f(t)=f1(t)*f2(t)')
xlabel('t');
ylabel('f(t)')
如果你就当这两个都是从1开始的,
直接卷积掉,
结果是5个数,
第一个数就是x(1)*h(1),
这也是你要的卷积当中的一个,
只是在你要的结果里,这个是x(0)*h(-1)
,所以在结果的序号是-1而不是1,
所以你只要把结果平移就可以了
因为matlab不支持负数序号的数组,
所以你最好只是“在心里平移”就好了,
就是说你保存的还是这个结果,
只是写程序的时候记住了,
这个是从-1开始的
你只需要在画图的时候指定横坐标
plot(-1:3,
conv(x,
h))

在MATLAB中知道多个点的位置坐标,怎样求各个点之间的距离?

关键函数pdist( )

参考代码:

clc

clear all

close all

x = [0 1;    % 第一列是横坐标,第二列是纵坐标

1 2;

2 3];

d = pdist(x);  % 计算两两点之间距离

disp(d);

figure

plot(x(:,1), x(:,2), '^--');

grid on

xlabel('x');

ylabel('y');

输出结果:

1.4142    2.8284    1.4142

n=length(A);

distace=zeros(n);

for i=1:n

for j=i+1:n

distance=sqrt(sum((A(i,:)-A(j,:)).^2));

end

end

扩展资料:

MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。

简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

参考资料来源:百度百科-MATLAB

参考技术A

关键函数pdist( )


参考代码:

clc
clear all
close all


x = [0 1;    % 第一列是横坐标,第二列是纵坐标
     1 2;
     2 3];
d = pdist(x);  % 计算两两点之间距离
disp(d);

figure
plot(x(:,1), x(:,2), '^--');
grid on
xlabel('x');
ylabel('y');


输出结果:

1.4142    2.8284    1.4142


效果图

参考技术B 1、你可以将横坐标存放于矩阵A的第一列中,纵坐标存放于矩阵A的第二列中
2、之后运行下述代码:
n=length(A);
distace=zeros(n);
for i=1:n
for j=i+1:n
distance=sqrt(sum((A(i,:)-A(j,:)).^2));
end
end
3、得到的distance即为你所求两点之间的距离,为0的地方只是那两个点已经求过了,不想重 复求取。

以上是关于matlab怎样求卷积?的主要内容,如果未能解决你的问题,请参考以下文章

数字信号处理卷积编程实现 ( Matlab 卷积和多项式乘法 conv 函数 | 使用 matlab 代码求卷积并绘图 )

用matlab计算两个函数的卷积

matlab 卷积

MATLAB,conv2卷积函数报错,求大神帮忙看看

应用Matlab计算两有限长序列的线性卷积

matlab 先做卷积Z(n)=conv(X(n)*Y(n)),n=1,2,3……100,现在利用Y(n)和Z(n)将X(n)求出来