想用MATLAB画一个分段函数图像,其实是Meyer小波函数,求大神指教!!

不知道function的m文件应该放在哪个文件夹下,本人MATLAB初学者,不知道编写的function是否正确……
function out=wavelet(w)
if (abs(w)>=2*pi/3)&&(abs(w)<4*pi/3) %判断|w|的大小所在的区间
out=sin(pi/2*V(3/(2*pi)*abs(w)-1))*exp(w/2*1i)/sqrt(2*pi); %“;”为不显示out的值
elseif (abs(w)>=4*pi/3)&&(abs(w)<8*pi/3) %判断|w|的大小所在的区间
out=cos(pi/2*V(3/(4*pi)*abs(w)-1))*exp(w/2*1i)/sqrt(2*pi);
else %其他情况out为0
out=0;
end
end
其中V(x)为另一个函数:
function out=V(a)
if(a>=0&&a<=1)
out=a^4*(35-84*a+70*a^2-20*a^3);
else
error('out of domain.')
end
end
麻烦帮我指正错误,并告诉我怎样把图像画出来,感激不尽!
对了,我虽然知道.*和*,./和/的区别,但在编写function时还是不知道如何区分……请务必帮我改好function啊……

第1个回答  2019-12-03

我画出来了,可是不对头,咱能联系一下么,急!谢谢你

第2个回答  2015-03-27

% 如果乘除两个数都是向量(矩阵)必须用点乘(.*)和点除(./)

function out = wavelet(w)
aw = abs(w);
if (aw >= 2*pi/3) && (aw < 4*pi/3)       %判断|w|的大小所在的区间
    out = sin(pi/2*V(3/(2*pi)*aw-1))*exp(w/2*i)/sqrt(2*pi); %“;”为不显示out的值
elseif (aw >= 4*pi/3) && (aw < 8*pi/3)   %判断|w|的大小所在的区间
    out = cos(pi/2*V(3/(4*pi)*aw-1))*exp(w/2*i)/sqrt(2*pi);
else                                     %其他情况out为0
    out = 0;
end


function out = V(a)
if (a >= 0) && (a <= 1)
    out = a^4*(35-84*a+70*a^2-20*a^3);
else
    error('out of domain.')
end

追问

你的版本和我的基本上没区别,并且你并没有解决我的问题~~但还是谢谢你。

追答

% 我学医的,理工科类非常欠缺,只能参考哈

w = (1:.01:3)*pi;
ww = length(w);
R = zeros(1,ww);
for p = 1:ww
    R(p) = wavelet(w(p));
end
plot(w,real(R),'r-');      % 画数据实部
hold on
plot(real(R),imag(R),'b.'); % 画数据虚部
grid on

追问

那个函数的图形并不是实部和虚部分开画的,他就是一个有波动的小波函数。也很感谢你!

本回答被网友采纳
相似回答