土木年华 发表于 2010-9-8 17:43

小程序问题求助

t=1:20;
z=(1+0.2*cos(2*pi*7.5*t))*sin(2*pi*30*t+0.4*cos(2*pi*15*t))+cos(2*pi*120*t);
plot(t,z)
这个小程序怎么运行不出来,老是说内部矩阵维数要一致,哪位大哥给解答一下,谢谢!

xiaoxiaobeifeng 发表于 2010-9-8 19:20

我刚开始也很纳闷 后来测试了一下
z=(1+0.2*cos(2*pi*7.5*t)) 是有结果输出的 说明没问题
z=(1+0.2*cos(2*pi*7.5*t))*sin(2*pi*30*t+0.4*cos(2*pi*15*t)) 有问题了
提示说维数不对 这就很明显了 应该是中间的乘法除了出了问题,乘号之前是1×20向量,乘号之后也是,所以没法运算,改成点乘就可以了z=(1+0.2*cos(2*pi*7.5*t)).*sin(2*pi*30*t+0.4*cos(2*pi*15*t)) +cos(2*pi*120*t);

zhouyang664 发表于 2010-9-8 21:37

MATLAB中有两种运算:矩阵运算和数组运算!
矩阵运算使用+-*/\,而数组运算使用.+ .- .* ./ .\,后者主要用于矩阵对应元素之间的操作!
根据我的经验,在进行运算时要先提醒一下自己进行的是否是数组运算,是否使用了正确的操作符,这样能避免掉很多问题,因为一般进行的都是数组运算,!

qibbxxt 发表于 2010-9-9 15:15

在不加点的情况下,matlab可以帮你补上,不过现在不推荐用内联函数inlineclear;clc;close all
f=inline('(1+0.2*cos(2*pi*7.5*t))*sin(2*pi*30*t+0.4*cos(2*pi*15*t))+cos(2*pi*120*t)');
z=vectorize(f);
t=1:20;
plot(t,z(t))
页: [1]
查看完整版本: 小程序问题求助