📄 gmgui.asv
字号:
text((0.3*k1),(0.8*max(x1)),'x1(n)');
axes(handles.axes8),stem(n3,x4,'.');
axis([-k2 k1+k2-1 (min(x4)<0)*min(x4) max(x4)]);
title('乘积');
text((0.3*(k1+k2-1)),(0.8*max(x4)),string2);
axes(handles.axes9),stem((-n2+i),x2,'.');
axis([-k2 k1+k2-1 (min([x1,x2])<0)*min([x1,x2]) max([x1,x2])]);
title('翻转、移位');
text(i-2,(0.8*max(x2)),string3);
axes(handles.axes10),stem(n3,x5,'.');
axis([-k2 k1+k2-1 (min(x4)<0)*min(x4) max(x5)]);
title('求和、卷积结果');
text((0.3*(k1+k2-1)),(0.8*max(x5)),'x1(n)*x2(n)');
end
set(handles.edit4,'string',num2str(x5));
case 2
ss=get(handles.edit3,'string');
if isempty(ss)
N1=max([k1,k2]);
set(handles.edit3,'string',num2str(N1));
else
N1=str2num(ss);
end
s=0;
if N1<k1%混叠
t=ceil(k1/N1)-1;
for i=1:(2*t+1)
x3(i,:)=[zeros(1,(i-1)*N1),x1,zeros(1,(2*t-i+1)*N1)];
s=s+x3(i,:);
end
for i=1:N1
x4(i)=s(t*N1+i);
end
else%等长或补零
x4=[x1,zeros(1,N1-k1)];
end
s=0;
if N1<k2%混叠
t=ceil(mod(k2,N1))-1;
for i=1:(2*t+1)
x5(i,:)=[zeros(1,(i-1)*N1),x2,zeros(1,(2*t-i+1)*N1)];
s=s+x5(i,:);
end
for i=1:N1
x6(i)=s(t*N1+i);
end
else%等长或补零
x6=[x2,zeros(1,N1-k2)];
end
%x4(n),x6(n)分别为x1(n),x2(n)周期延拓后的主值序列
axes(handles.axes6),stem(n1,x1,'.');
axis([-2*N1 2*N1 (min([x1,x2])<0)*min([x1,x2]) max([x1,x2])]);
ylabel('x1(n)');
axes(handles.axes9),stem(n2,x2,'.');
axis([-2*N1 2*N1 (min([x1,x2])<0)*min([x1,x2]) max([x1,x2])]);
ylabel('x2(n)');
pause;
drawnow
axes(handles.axes6),stem(-4*N1:4*N1-1,repmat(x4,1,8),'.');
axis([-2*N1 2*N1 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
title(['x1(n)以',num2str(N1),'为周期进行延拓']);
ylabel(['x1((n))',num2str(N1)]);
axes(handles.axes9),stem(-4*N1:4*N1-1,repmat(x6,1,8),'.');
axis([-2*N1 2*N1 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
title(['x2(n)以',num2str(N1),'为周期进行延拓']);
ylabel(['x2((n))',num2str(N1)]);
h=x6(1);
x6(1)=[];
x6=[h,fliplr(x6)];%x6(n)循环翻转
x6t=repmat(x6,1,2);
s=zeros(1,N1);
for i=0:N1-1
x4t=[zeros(1,N1-i),x4,zeros(1,i)];
x7=x4t.*x6t;
x8=x7(:,[N1+1-i:2*N1-i]);
s(i+1)=feval('sum',(x8(1,:)));
pause;
drawnow
axes(handles.axes6),stem(-4*N1:4*N1-1,repmat(x4,1,8),'.');
axis([-2*N1 2*N1 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
text(0,0.8*max([x4,x6]),['x1((n))',num2str(N1)]);
axes(handles.axes8),stem(-4*N1:4*N1-1,repmat(x8,1,8),'.');
axis([-2*N1 2*N1 (min(x8)<0)*min(x8) max(x8)]);
title('乘积');
text(0,0.8*max(x8),['x1((n))',num2str(N1),'×x2((',num2str(i),'-n))',num2str(N1)]);
axes(handles.axes9),stem(-4*N1+i:4*N1-1+i,repmat(x6,1,8),'.');
axis([-2*N1 2*N1 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
title('翻转、移位');
text(0,0.8*max([x4,x6]),['x2((',num2str(i),'-n))',num2str(N1)]);
axes(handles.axes10),stem(-4*N1:4*N1-1,repmat(s,1,8),'.');
axis([-2*N1 2*N1 (min(s)<0)*min(s) max(s)]);
title('求和、卷积结果');
end
set(handles.edit4,'string',['......',num2str(s),'......']);
case 3
ss=get(handles.edit3,'string');
if isempty(ss)
N2=max([k1,k2]);
set(handles.edit3,'string',num2str(N2));
else
N2=str2num(ss);
end
s=0;
if N2<k1%混叠
t=ceil(mod(k1,N2))-1;
for i=1:(2*t+1)
x3(i,:)=[zeros(1,(i-1)*N2),x1,zeros(1,(2*t-i+1)*N2)];
s=s+x3(i,:);
end
for i=1:N2
x4(i)=s(t*N2+i);
end
else%等长或补零
x4=[x1,zeros(1,N2-k1)];
end
s=0;
if N2<k2%混叠
t=ceil(mod(k2,N2))-1;
for i=1:(2*t+1)
x5(i,:)=[zeros(1,(i-1)*N2),x2,zeros(1,(2*t-i+1)*N2)];
s=s+x5(i,:);
end
for i=1:N2
x6(i)=s(t*N2+i);
end
else%等长或补零
x6=[x2,zeros(1,N2-k2)];
end
%x4(n),x6(n)分别为x1(n),x2(n)周期延拓后的主值序列
axes(handles.axes6),stem(n1,x1,'.');
axis([-N2 2*N2 (min([x1,x2])<0)*min([x1,x2]) max([x1,x2])]);
ylabel('x1(n)');
axes(handles.axes9),stem(n2,x2,'.');
axis([-N2 2*N2 (min([x1,x2])<0)*min([x1,x2]) max([x1,x2])]);
ylabel('x2(n)');
pause;
drawnow
axes(handles.axes6),stem(0:N2-1,x4,'.');
axis([-N2 2*N2 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
title(['x1(n)以',num2str(N2),'为周期进行延拓后的主值序列']);
ylabel(['x1((n))',num2str(N2),'×R',num2str(N2),'(n)']);
axes(handles.axes9),stem(0:N2-1,x6,'.');
axis([-N2 2*N2 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
title(['x2(n)以',num2str(N2),'为周期进行延拓后的主值序列']);
ylabel(['x2((n))',num2str(N2),'×R',num2str(N2),'(n)']);
h=x6(1);
x6(1)=[];
x6=[h,fliplr(x6)];%x6(n)循环翻转
x6t=repmat(x6,1,2);
s=0;
for i=0:N2-1
x4t=[zeros(1,N2-i),x4,zeros(1,i)];
x7=x4t.*x6t;
x8=x7(:,[N2+1-i:2*N2-i]);
s(i+1)=feval('sum',(x8(1,:)));
pause;
drawnow
axes(handles.axes6),stem(0:N2-1,x4,'.');
axis([-N2 2*N2 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
text(0,0.8*max([x4,x6]),['x1((n))',num2str(N2),'×R',num2str(N2),'(n)']);
axes(handles.axes8),stem(0:N2-1,x8,'.');
axis([-N2 2*N2 (min(x8)<0)*min(x8) max(x8)]);
title('乘积');
text(0,0.8*max(x8),['x1((n))',num2str(N2),'·R',num2str(N2),'(n)','×x2((',num2str(i),'-n))','·R',num2str(N2),'(n)']);
axes(handles.axes9),stem(0:N2-1,x6t(:,[N2-i+1:2*N2-i]),'.');
axis([-N2 2*N2 (min([x4,x6])<0)*min([x4,x6]) max([x4,x6])]);
title('翻转、移位');
text(0,0.8*max([x4,x6]),['x2((',num2str(i),'-n))',num2str(N2),'×R',num2str(N2),'(n)']);
axes(handles.axes10),stem(0:i,s,'.');
axis([-N2 2*N2 (min(s)<0)*min(s) max(s)]);
title('求和、卷积结果');
end
set(handles.edit4,'string',num2str(s));
otherwise
;
end
x3=0,x4=0,x5=0,x6=0,x7=0,x8=0;
set(handles.edit1,'enable','on');
set(handles.edit2,'enable','on');
set(handles.popupmenu4,'enable','on');
if kk==2|kk==3
set(handles.edit3,'enable','on');
end
set(handles.pushbutton1,'enable','on');
pause;
set(handles.edit4,'string','');
axes(handles.axes6),cla;
axis([0 1 0 1]);
title('');
axes(handles.axes9),cla;
axis([0 1 0 1]);
title('');
axes(handles.axes8),cla;
axis([0 1 0 1]);
title('');
axes(handles.axes10),cla;
axis([0 1 0 1]);
title('');
% --- Executes during object creation, after setting all properties.function popupmenu4_CreateFcn(hObject, eventdata, handles)% hObject handle to popupmenu4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end% --- Executes on selection change in popupmenu4.function popupmenu4_Callback(hObject, eventdata, handles)% hObject handle to popupmenu4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns popupmenu4 contents as cell array% contents{get(hObject,'Value')} returns selected item from popupmenu4if get(hObject,'Value')==1
set(handles.edit3,'string','');
set(handles.edit3,'enable','off');
else
set(handles.edit3,'enable','on');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -