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

📄 bysj.m

📁 我自己的毕业设计 软件部分 大家可以对GUI有个熟悉 加油
💻 M
📖 第 1 页 / 共 5 页
字号:
set(findobj('tag','slider_att2_value'),'string',num2str(get(findobj('tag','slider_att2'),'value')));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%线性坐标 一阶均衡 幅频特性function [f_out,amp_out] = plot_fupin_xianxing_1(cf1,sj1,xstart,xend,ystart,yend)                 f_out = xstart:(xend-xstart)/200:xend;a = 10^(sj1/10);fenzi = 1/a + (f_out/cf1).*(f_out/cf1);fenmu = a + (f_out/cf1).*(f_out/cf1);amp_out = 10*log10(fenzi./fenmu);plot(f_out,amp_out,'r')axis([xstart,xend,ystart,yend]) xlabel('频率'),ylabel('衰减')title('一级均衡幅频特性曲线 线性坐标系')grid on%线性坐标 一阶均衡 相频特性function[f_out,phase] = plot_xiangpin_xianxing_1(cf1,sj1,xstart,xend)      f_out = xstart:(xend-xstart)/200:xend;a = 10^(sj1/10);fenzi = sqrt(a)*(a-1);fenmu = a.*(f_out ./ cf1 + cf1 ./ f_out);theta = atan(fenzi./fenmu);phase = theta.* 360/(2*pi);plot(f_out,phase,'b')xlabel('频率'),ylabel('角度')title('一级均衡相频特性曲线 线性坐标系')grid on%%%%%%%%%%%将相位最大值的X坐标和Y坐标显示与phase_all max中str_x = 'x = ';   set(findobj('tag','text_phaseall_x'),'string',[str_x,sprintf('%6.4g\',cf1)]);y_all_max = max(phase);str_y = 'y = ';   set(findobj('tag','text_phaseall_y'),'string',[str_y,sprintf('%6.4g\',y_all_max)]);%%%%%%%%%%%将相位最大值的X坐标和Y坐标显示与phase 1 max中str_x = 'x = ';   set(findobj('tag','text_phase1_x'),'string',[str_x,sprintf('%6.4g\',cf1)]);y_max = max(phase);str_y = 'y = ';   set(findobj('tag','text_phase1_y'),'string',[str_y,sprintf('%6.4g\',y_max)]);%对数坐标 一阶均衡 幅频特性function [f_out,amp_out] = plot_fupin_duishu_1(cf1,sj1,xstart,xend,ystart,yend)         %画出一级均衡器的幅频响应曲线f_out_temp = xstart:(xend-xstart)/200:xend;                                             % 图形输出频率f_out 幅度amp_out  f_out = 10.^f_out_temp;                                                                 % 输入  一级均衡中心频率cf1 衰减分贝sj1a = 10^(sj1/10);                                                                        %对于对数坐标来说,横坐标是f/fo  这样子直接用比值作为横坐标即可   fenzi = 1/a + (f_out).*(f_out);                                                         %f=fo时衰减是1/2倍  衰减了6分贝 实际上最大的衰减倍数是12分贝fenmu = a + (f_out).*(f_out);amp_out = 10*log10(fenzi./fenmu);semilogx(f_out,amp_out,'r')xlabel('频率 f/fo'),ylabel('衰减 P(f/fo)')title('一级均衡幅频特性曲线 对数坐标系')grid on%对数坐标 一阶均衡 相频特性function[f_out,phase] = plot_xiangpin_duishu_1(cf1,sj1,xstart,xend)      f_out_temp = xstart:(xend-xstart)/200:xend;f_out = 10.^f_out_temp;a = 10^(sj1/10);fenzi = sqrt(a)*(a-1);fenmu = a.*(f_out + 1.0 ./ f_out);theta = atan(fenzi./fenmu);phase = theta.* 360/(2*pi);semilogx(f_out,phase,'b')xlabel('频率 f/fo'),ylabel('角度')title('一级均衡相频特性曲线 对数坐标系')grid on%%%%%%%%%%%将相位最大值的X坐标和Y坐标显示与phase 1 max中str_x = 'x = ';   set(findobj('tag','text_phase1_x'),'string',[str_x,sprintf('%6.4g\',cf1)]);y_max = max(phase);str_y = 'y = ';   set(findobj('tag','text_phase1_y'),'string',[str_y,sprintf('%6.4g\',y_max)]);%线性坐标 二阶均衡 幅频特性function[f_out,amp_out_1,amp_out_2] = plot_fupin_xianxing_2(cf1,sj1,cf2,sj2,xstart,xend,ystart,yend)f_out = xstart:(xend-xstart)/200:xend;a1 = 10^(sj1/10);a2 = 10^(sj2/10);fenzi1 = 1/a1 + (f_out/cf1).*(f_out/cf1);fenmu1 = a1 + (f_out/cf1).*(f_out/cf1);amp_out_1 = 10*log10(fenzi1./fenmu1);fenzi2 = 1/a2 + (f_out/cf2).*(f_out/cf2);fenmu2 = a2 + (f_out/cf2).*(f_out/cf2);amp_out_2 = 10*log10(fenzi2./fenmu2);amp_out_all_2 = amp_out_1 + amp_out_2;   %求出总的幅频响应plot(f_out,amp_out_1,'m')                %第一级均衡hold on;plot(f_out,amp_out_2,'b')                %第二级均衡hold on;plot(f_out,amp_out_all_2,'r')            %总的均衡hold on;axis([xstart,xend,ystart,yend]) xlabel('频率'),ylabel('衰减')title('二级均衡幅频特性曲线 线性坐标系')grid on%线性坐标 二阶均衡 相频特性function [f_out,phase] = plot_xiangpin_xianxing_2(cf1,sj1,cf2,sj2,xstart,xend)f_out = xstart:(xend-xstart)/200:xend;a1 = 10^(sj1/10);fenzi1 = sqrt(a1)*(a1-1);fenmu1 = a1.*(f_out ./ cf1 + cf1 ./ f_out);theta1 = atan(fenzi1./fenmu1);phase1 = theta1.* 360/(2*pi);a2 = 10^(sj2/10);fenzi2 = sqrt(a2)*(a2-1);fenmu2 = a2.*(f_out ./ cf2 + cf2 ./ f_out);theta2 = atan(fenzi2./fenmu2);phase2 = theta2.* 360/(2*pi);phase_all_2 = phase1 + phase2;plot(f_out,phase1,'m')hold on;plot(f_out,phase2,'b')hold on;plot(f_out,phase_all_2,'r')xlabel('频率'),ylabel('角度')title('二级均衡相频特性曲线 线性坐标系')grid on%要求出相位(Y坐标)最大值所对应的X坐标,必须用到【m,n】=max(a); a是一个一维数组%这样会返回a数组的max值为m,它在a数组里面的位置是n [y_all_max,index] = max(phase_all_2);x_phase_max = f_out(index);%%%%%%%%%%%将相位最大值的X坐标和Y坐标显示与phase max中%phase_allstr_x = 'x = ';   set(findobj('tag','text_phaseall_x'),'string',[str_x,sprintf('%6.4g\',x_phase_max)]);    str_y = 'y = ';   set(findobj('tag','text_phaseall_y'),'string',[str_y,sprintf('%6.4g\',y_all_max)]);%phase_1str_x = 'x = ';   set(findobj('tag','text_phase1_x'),'string',[str_x,sprintf('%6.4g\',cf1)]);y1_max = max(phase1);str_y = 'y = ';   set(findobj('tag','text_phase1_y'),'string',[str_y,sprintf('%6.4g\',y1_max)]);%phase_2str_x = 'x = ';   set(findobj('tag','text_phase2_x'),'string',[str_x,sprintf('%6.4g\',cf2)]);y2_max = max(phase2);str_y = 'y = ';   set(findobj('tag','text_phase2_y'),'string',[str_y,sprintf('%6.4g\',y2_max)]);%对数坐标 二阶均衡 幅频响应function [f_out,amp_out_1,amp_out_2] = plot_fupin_duishu_2(cf1,sj1,cf2,sj2,xstart,xend,ystart,yend)         %画出二级均衡器的幅频响应曲线f_out_temp = xstart:(xend-xstart)/200:xend;                                                                 % 图形输出频率f_out 幅度amp_out  f_out = 10.^f_out_temp;                                                                                     % 输入  一级均衡中心频率cf1 衰减分贝sj1a1 = 10^(sj1/10);                                                                        %对于对数坐标来说,横坐标是f/fo  这样子直接用比值作为横坐标即可   fenzi1 = 1/a1 + (f_out).*(f_out);                                                        %f=fo时衰减是1/2倍  衰减了6分贝 你就得输入3分贝fenmu1 = a1 + (f_out).*(f_out);amp_out_1 = 10*log10(fenzi1./fenmu1);a2 = 10^(sj2/10);                                                                        %对于对数坐标来说,横坐标是f/fo  这样子直接用比值作为横坐标即可   fenzi2 = 1/a2 + (f_out).*(f_out);                                                        %f=fo时衰减是1/2倍  衰减了6分贝 你就得输入3分贝fenmu2 = a2 + (f_out).*(f_out);amp_out_2 = 10*log10(fenzi2./fenmu2);                                                    %虽然比值一样,但是这两级均衡器的中心频率是不一样的semilogx(f_out,amp_out_1,'m')hold on;semilogx(f_out,amp_out_2,'b')hold on;xlabel('频率 f/fo'),ylabel('衰减 P(f/fo)')title('二级均衡幅频特性曲线 对数坐标系')grid on%对数坐标 二阶均衡 相频响应function [f_out,phase_out_1,phase_out_2] = plot_xiangpin_duishu_2(cf1,sj1,cf2,sj2,xstart,xend)f_out_temp = xstart:(xend-xstart)/200:xend;f_out = 10.^f_out_temp;a1 = 10^(sj1/10);fenzi1 = sqrt(a1)*(a1-1);fenmu1 = a1.*(f_out + 1.0 ./ f_out);theta1 = atan(fenzi1./fenmu1);phase_out_1 = theta1.* 360/(2*pi);a2 = 10^(sj2/10);fenzi2 = sqrt(a2)*(a2-1);fenmu2 = a2.*(f_out + 1.0 ./ f_out);theta2 = atan(fenzi2./fenmu2);phase_out_2 = theta2.* 360/(2*pi);semilogx(f_out,phase_out_1,'m')hold on;semilogx(f_out,phase_out_2,'b')hold on;xlabel('频率 f/fo'),ylabel('角度')title('二级均衡相频特性曲线 对数坐标系')grid on%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  1.92beta看累加器状态  玲儿我爱你%绘图函数   写在这里是因为每一次更改滑动的slider_bar都必须得调用此函数重新绘制曲线%里面包括有 1:插值函数 2:改变参数之后的函数绘制 3:二者加和的函数绘制%先写绘制均衡结果一阶幅频  改变slider_bar之后就能够重新计算并绘图一次function [f_out,amp_out_all_1,amp_out_1] = painting_fupin_all_1()%基本参数读取    xstart = str2num(get(findobj('Tag','edit_xstart'),'string'));       xend   = str2num(get(findobj('Tag','edit_xend'),'string'));    ystart = str2num(get(findobj('Tag','edit_ystart'),'string'));       yend   = str2num(get(findobj('Tag','edit_yend'),'string'));%一阶均衡曲线相关    %获取参数----从slider_bar的value属性直接读出    cf1_temp = get(findobj('tag','slider_cf1'),'value');  %为什么要这样做? 因为slider_bar只能处理整数类型,最大值是2^31=2147483647=2.14GHz 太小了     cf1 = cf1_temp * 1000;    sj1 = get(findobj('tag','slider_att1'),'value');    %一阶均衡的衰减器曲线参数计算    f_out = xstart:(xend-xstart)/200:xend;    a = 10^(sj1/10);    fenzi = 1/a + (f_out/cf1).*(f_out/cf1);    fenmu = a + (f_out/cf1).*(f_out/cf1);    amp_out_1 = 10*log10(fenzi./fenmu);%插值曲线相关    interp1_x_string = get(findobj('tag','edit_interp1_x'),'string');    interp1_x_array  = str2num(interp1_x_string);    interp1_y_string = get(findobj('tag','edit_interp1_y'),'string');    interp1_y_array  = str2num(interp1_y_string);    %插值的范围就是【xstart xend ystart yend】    %开始插值    interp1_x = xstart:((xend - xstart)/200):xend;    interp1_y = interp1(interp1_x_array,interp1_y_array,interp1_x,'spline');  %这里应该可选择插值方式    就用spline方式即可%二者加和曲线    amp_out_all_1 = amp_out_1 + interp1_y;  %开始画图      这里的坐标系在滑动slider_bar的时候触发    plot(f_out,interp1_y,'m')    hold on;    plot(f_out,amp_out_1,'b')    hold on;    plot(f_out,amp_out_all_1,'r')    hold on;    axis([xstart,xend,ystart,yend])     xlabel('频率'),ylabel('衰减')    title('一级均衡结果 幅频特性曲线 线性坐标系')    grid on%先写绘制均衡结果一阶相频  改变slider_bar之后就能够重新计算并绘图一次    %一阶相频的结果就是一阶均衡的结果 function[f_out,phase_all_1] = painting_xiangpin_all_1()%基本参数读取xstart = str2num(get(findobj('Tag','edit_xstart'),'string'));       xend   = str2num(get(findobj('Tag','edit_xend'),'string'));%一阶均衡曲线相关    %获取参数----从slider_bar的value属性直接读出    cf1_temp = get(findobj('tag','slider_cf1'),'value');  %为什么要这样做? 因为slider_bar只能处理整数类型,最大值是2^31=2147483647=2.14GHz 太小了     cf1 = cf1_temp * 1000;    sj1= get(findobj('tag','slider_att1'),'value');     %一阶均衡的衰减器相频参数计算    f_out = xstart:(xend-xstart)/200:xend;    a = 10^(sj1/10);    fenzi = sqrt(a)*(a-1);    fenmu = a.*(f_out ./ cf1 + cf1 ./ f_out);    theta = atan(fenzi./fenmu);    phase = theta.* 360/(2*pi);    plot(f_out,phase,'r')    xlabel('频率'),ylabel('角度')    title('一级均衡结果 相频特性曲线 线性坐标系')    grid on%%%%%%%%%%%将相位最大值的X坐标和Y坐标显示与phase_all max中str_x = 'x = ';   set(findobj('tag','text_phaseall_x'),'string',[str_x,sprintf('%6.4g\',cf1)]);y_all_max = max(phase);str_y = 'y = ';   set(findobj('tag','text_phaseall_y'),'string',[str_y,sprintf('%6.4g\',y_all_max)]);%%%%%%%%%%%将相位最大值的X坐标和Y坐标显示与phase 1 max中str_x = 'x = ';   set(findobj('tag','text_phase1_x'),'string',[str_x,sprintf('%6.4g\',cf1)]);y_max = max(phase);str_y = 'y = ';   set(findobj('tag','text_phase1_y'),'string',[str_y,sprintf('%6.4g\',y_max)]);%%%%%%%%%%%将相位最大值的X坐标和Y坐标显示与phase 2 max中   置空str_x = 'x = ';   set(findobj('tag','text_phase2_x'),'string',str_x);y_max = max(phase);str_y = 'y = ';   set(findobj('tag','text_phase2_y'),'string',str_y);%绘制均衡结果二阶幅频  改变slider_bar之后就能够重新计算并绘图一次function [f_out,amp_out_all_2,amp_out_1,amp_out_2] = painting_fupin_all_2()global m_amp_array m_add_state amp_out_1 amp_out_2if m_add_state==1    %基本参数读取        xstart = str2num(get(findobj('Tag','edit_xstart'),'string'));       xend   = str2num(get(findobj('Tag','edit_xend'),'string'));        ystart = str2num(get(findobj('Tag','edit_ystart'),'string'));       yend   = str2num(get(findobj('Tag','edit_yend'),'string'));    %一阶均衡曲线相关        %获取参数----从slider_bar的value属性直接读出        %一阶均衡已经由前面的代替了        cf2_temp = get(findobj('tag','slider_cf2'),'value');  %为什么要这样做? 因为slider_bar只能处理整数类型,最大值是2^31=2147483647=2.14GHz 太小了         cf2 = cf2_temp * 1000;        sj2 = get(findobj('tag','slider_att2'),'value');        %一阶均衡的衰减器曲线参数计算        f_out = xstart:(xend-xstart)/200:xend;        %第一阶均衡的计算        amp_out_1 = m_amp_array;        %第二阶均衡的计算        a2 = 10^(sj2/10);        fenzi2 = 1/a2 + (f_out/cf2).*(f_out/cf2);        fenmu2 = a2 + (f_out/cf2).*(f_out/cf2);        amp_out_2 = 10*log10(fenzi2./fenmu2);    %插值曲线相关        interp1_x_string = get(findobj('tag','edit_interp1_x'),'string');        interp1_x_array  = str2num(interp1_x_string);        interp1_y_string = get(findobj('tag','edit_interp1_y'),'string');        interp1_y_array  = str2num(interp1_y_string);        %插值的范围就是【xstart xend ystart yend】        %开始插值        interp1_x = xstart:((xend - xstart)/200):xend;        interp1_y = interp1(interp1_x_array,interp1_y_array,interp1_x,'spline');  %这里应该可选择插值方式    就用spline方式即可    %二者加和曲线        amp_out_all_2 = amp_out_1 + amp_out_2 + interp1_y;      %开始画图      这里的坐标系在滑动slider_bar的时候触发        plot(f_out,interp1_y,'m')        hold on;        plot(f_out,amp_out_1,'b')        hold on;        plot(f_out,amp_out_2,'c')        hold on;        plot(f_out,amp_out_all_2,'r')        hold on;        axis([xstart,xend,ystart,yend])         xlabel('频率'),ylabel('衰减')        title('累加均衡结果 幅频特性曲线 线性坐标系')        grid onelse    %基本参数读取        xstart = str2num(get(findobj('Tag','edit_xstart'),'string'));       xend   = str2num(get(findobj('Tag','edit_xend'),'string'));        ystart = str2num(get(findobj('Tag','edit_ystart'),'string'));       yend   = str2num(get(findobj('Tag','edit_yend'),'string'));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -