⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmgui.asv

📁 数字信号处理:1.卷积 2.抽样 3.滤波器
💻 ASV
📖 第 1 页 / 共 2 页
字号:
            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 + -