📄 bysj.m
字号:
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 + -