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( )
参考代码:
clcclear 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 先做卷积Z(n)=conv(X(n)*Y(n)),n=1,2,3……100,现在利用Y(n)和Z(n)将X(n)求出来