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

📄 bysj.m

📁 我自己的毕业设计 软件部分 大家可以对GUI有个熟悉 加油
💻 M
📖 第 1 页 / 共 5 页
字号:
function edit_ystart_Callback(hObject, eventdata, handles)% hObject    handle to edit_ystart (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_ystart as text_phase_diff%        str2double(get(hObject,'String')) returns contents of edit_ystart as a double% --- Executes during object creation, after setting all properties.function edit_xend_CreateFcn(hObject, eventdata, handles)% hObject    handle to edit_xend (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: edit 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'));endfunction edit_xend_Callback(hObject, eventdata, handles)% hObject    handle to edit_xend (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_xend as text_phase_diff%        str2double(get(hObject,'String')) returns contents of edit_xend as a double% --- Executes during object creation, after setting all properties.function edit_yend_CreateFcn(hObject, eventdata, handles)% hObject    handle to edit_yend (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: edit 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'));endfunction edit_yend_Callback(hObject, eventdata, handles)% hObject    handle to edit_yend (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit_yend as text_phase_diff%        str2double(get(hObject,'String')) returns contents of edit_yend as a double% --- Executes on button press in pb_calc_parameters.function pb_calc_parameters_Callback(hObject, eventdata, handles)% hObject    handle to pb_calc_parameters (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)calc_parameter();calc_impedance();% 我的自定义函数  % eileen I love you!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算函数function calc_parameter()%全局变量声明global eel cf1 att1_db cf2 att2_db xstart xend ystart yend R11 R12 R13 C1 L1 R21 R22 R23 C2 L2 m_add_state %取得累加器状态  %能取到最新的值%以下是获取输入参数% popupmenu2 == eel ;    % default eel=1;popup_eel_index = get(findobj('Tag','popupmenu2'),'value');switch popup_eel_index    case 1        eel = 1;    case 2        eel = 2;endif eel == 1        cf1_temp = get(findobj('tag','slider_cf1'),'value');                           cf1 = cf1_temp * 1000;        att1_db = get(findobj('tag','slider_att1'),'value');        %转化分贝数为数字        att1 = 10^(att1_db/10);else         cf1_temp = get(findobj('tag','slider_cf1'),'value');                           cf1 = cf1_temp * 1000;        att1_db = get(findobj('tag','slider_att1'),'value');        cf2_temp = get(findobj('tag','slider_cf2'),'value');                           cf2 = cf2_temp * 1000;        att2_db = get(findobj('tag','slider_att2'),'value');        %转化分贝数为数字        att1 = 10^(att1_db/10); att2 = 10^(att2_db/10);end%对某些参数调整omega0 = 2*pi*cf1; omega1 = 2*pi*cf2;%计算电阻电容电感的值    %均是国际单位制%显示电阻电容电感的值    %进行单位调整if m_add_state==1    %累加状态时 一阶均衡不可用    strR11 = 'R1 = ';   set(findobj('tag','textR11'),'string','invalid');    strR12 = 'R2 = ';   set(findobj('tag','textR12'),'string','invalid');    strR13 = 'R3 = ';   set(findobj('tag','textR13'),'string','invalid');    strC1 = 'C  = ';   set(findobj('tag','textC1'),'string','invalid');    strL1 = 'L  = ';   set(findobj('tag','textL1'),'string','invalid');    %只计算二阶均衡    %计算    R22 = 50;    R21 = (att2-1) * R22;    R23 = R22 / (att2-1);    C2  = sqrt(att2) / ( omega0 * (att2-1) * R22);    L2  = R22 * R22 * C2;    %显示    strR21 = 'R1 = ';   set(findobj('tag','textR21'),'string',[strR21,sprintf('%6.4g\',R21)]);    strR22 = 'R2 = ';   set(findobj('tag','textR22'),'string',[strR22,sprintf('%6.4g\',R22)]);    strR23 = 'R3 = ';   set(findobj('tag','textR23'),'string',[strR23,sprintf('%6.4g\',R23)]);    strC2 = 'C  = ';   set(findobj('tag','textC2'),'string',[strC2,sprintf('%6.4g\',C2)]);    strL2 = 'L  = ';   set(findobj('tag','textL2'),'string',[strL2,sprintf('%6.4g\',L2)]);else    if eel==1    %计算    R12 = 50;                   R11 = (att1-1) * R12;       R13 = R12 / (att1-1);      C1  = sqrt(att1) / ( omega0 * (att1-1) * R12 );             L1  = R12 * R12 * C1;    %显示    strR11 = 'R1 = ';   set(findobj('tag','textR11'),'string',[strR11,sprintf('%5.5g\',R11)]);    strR12 = 'R2 = ';   set(findobj('tag','textR12'),'string',[strR12,sprintf('%6.5g\',R12)]);    strR13 = 'R3 = ';   set(findobj('tag','textR13'),'string',[strR13,sprintf('%6.5g\',R13)]);    strC1 = 'C  = ';   set(findobj('tag','textC1'),'string',[strC1,sprintf('%6.5g\',C1)]);    strL1 = 'L  = ';   set(findobj('tag','textL1'),'string',[strL1,sprintf('%6.5g\',L1)]);        strR21 = 'R1 = ';   set(findobj('tag','textR21'),'string',strR21);    strR22 = 'R2 = ';   set(findobj('tag','textR22'),'string',strR22);    strR23 = 'R3 = ';   set(findobj('tag','textR23'),'string',strR23);    strC2 = 'C  = ';   set(findobj('tag','textC2'),'string',strC2);    strL2 = 'L  = ';   set(findobj('tag','textL2'),'string',strL2);else    %计算    R12 = 50;                                           R11 = (att1-1) * R12;                               R13 = R12 / (att1-1);                               C1  = sqrt(att1) / ( omega0 * (att1-1) * R12 );     L1  = R12 * R12 * C1;                               R22 = 50;    R21 = (att2-1) * R22;    R23 = R22 / (att2-1);    C2  = sqrt(att2) / ( omega1 * (att2-1) * R22);    L2  = R22 * R22 * C2;    %显示    strR11 = 'R1 = ';   set(findobj('tag','textR11'),'string',[strR11,sprintf('%6.4g\',R11)]);    strR12 = 'R2 = ';   set(findobj('tag','textR12'),'string',[strR12,sprintf('%6.4g\',R12)]);    strR13 = 'R3 = ';   set(findobj('tag','textR13'),'string',[strR13,sprintf('%6.4g\',R13)]);    strC1 = 'C  = ';   set(findobj('tag','textC1'),'string',[strC1,sprintf('%6.4g\',C1)]);    strL1 = 'L  = ';   set(findobj('tag','textL1'),'string',[strL1,sprintf('%6.4g\',L1)]);        strR21 = 'R1 = ';   set(findobj('tag','textR21'),'string',[strR21,sprintf('%6.4g\',R21)]);    strR22 = 'R2 = ';   set(findobj('tag','textR22'),'string',[strR22,sprintf('%6.4g\',R22)]);    strR23 = 'R3 = ';   set(findobj('tag','textR23'),'string',[strR23,sprintf('%6.4g\',R23)]);    strC2 = 'C  = ';   set(findobj('tag','textC2'),'string',[strC2,sprintf('%6.4g\',C2)]);    strL2 = 'L  = ';   set(findobj('tag','textL2'),'string',[strL2,sprintf('%6.4g\',L2)]);endend%测试使用% set('test','string',sprintf('R1 = %d(欧姆)',R1));% sprintf('The array is %dx%d.',2,3)      The array is 2x3%测试使用%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function calc_impedance()global eel cf1 att1_db cf2 att2_db xstart xend ystart yend R11 R12 R13 C1 L1 R21 R22 R23 C2 L2 m_add_state    %能取到最新的值if m_add_state==1    set(findobj('tag','text_l2r'),'string','invalid but match')else    %计算左到右的阻抗 看看是否匹配    ------   用复数计算    if eel==1        %计算一阶均衡的输入阻抗        omega1 = 2*pi*cf1;         wcr1_1 = omega1*C1*R11;           %实时角频率--omega1   %替代符号wcr1 = omega * C * R1            Z1_real = R11 / (1+wcr1_1^2);           Z1_imag = -(wcr1_1*R11 / (1+wcr1_1^2));        Z1 = complex(Z1_real,Z1_imag);            Z3_real = R13;                          Z3_imag = omega1 * L1;        Z3 = complex(Z3_real,Z3_imag);            Zin1_fenzi = Z1*Z3 + (Z1+Z3)*R12 + R12^2;     Zin1_fenmu = Z1 + Z3 + 2*R12;        Zin1 = Zin1_fenzi / Zin1_fenmu;        set(findobj('tag','text_l2r'),'string',num2str(Zin1));    else        %计算二阶均衡的输入阻抗              应该从后级开始计算        %先计算第二级衰减网络        omega2 = 2*pi*cf2;         wcr1_2 = omega2*C2*R21;           %实时角频率--omega2   %替代符号wcr1 = omega * C * R1            Z21_real = R21 / (1+wcr1_2^2);           Z21_imag = -(wcr1_2*R21 / (1+wcr1_2^2));        Z21 = complex(Z21_real,Z21_imag);            Z23_real = R23;                          Z23_imag = omega2 * L2;        Z23 = complex(Z23_real,Z23_imag);            Zin2_fenzi = Z21*Z23 + (Z21+Z23)*R22 + R22^2;     Zin2_fenmu = Z21 + Z23 + 2*R22;        Zin2 = Zin2_fenzi / Zin2_fenmu;   %从第二级看过去的输入阻抗 就是第一级衰减网络的负载        Zin2_real = real(Zin2); %由于虚部太小 实际计算结果都是在 e-15 的数量级 忽略掉虚部!  这里有个问题 实部不是50 而是50 + 1.4211e-14        if 1  %实部大概是 50 + 1.4211e-14   略大于50  就是匹配的 所以无条件执行            %计算第一级衰减网络             omega1 = 2*pi*cf1;         wcr1_1 = omega1*C1*R11;           %实时角频率--omega1   %替代符号wcr1 = omega * C * R1                Z1_real = R11 / (1+wcr1_1^2);           Z1_imag = -(wcr1_1*R11 / (1+wcr1_1^2));            Z1 = complex(Z1_real,Z1_imag);                Z3_real = R13;                          Z3_imag = omega1 * L1;            Z3 = complex(Z3_real,Z3_imag);                Zin1_fenzi = Z1*Z3 + (Z1+Z3)*R12 + R12^2;     Zin1_fenmu = Z1 + Z3 + 2*R12;            Zin1 = Zin1_fenzi / Zin1_fenmu;            set(findobj('tag','text_l2r'),'string',num2str(Zin1));        else            set(findobj('tag','text_l2r'),'string','can not matching');        end    endend%计算左到右阻抗 看看是否匹配    ------   用复数计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function put_slider_set()% 将数据刷进slider的设置里面     %需要先输入Max值,再输入Min值% 因为M语句是解释性语句,读一句,执行一句,如果先输入Min值,检查时很可能出现错误!% central frequency level 1% maxcf_1_end_string = get(findobj('tag','edit_slider_cf1_end'),'string');   cf_1_end = str2num(cf_1_end_string);  set(findobj('Tag','slider_cf1'),'Max',cf_1_end);%将现在输入的初始值放到slider的value属性中   1:先找到值  2:set值于value属性%为什么要缩小1000倍? 因为slider_bar只能处理整数类型,最大值是2^31=2147483647=2.14GHz 太小了value_temp = str2num(get(findobj('Tag','edit_cf_1'),'string'));slider_value = value_temp / 1000;set(findobj('Tag','slider_cf1'),'Value',slider_value);% mincf_1_start_string = get(findobj('tag','edit_slider_cf1_start'),'string');   cf_1_start = str2num(cf_1_start_string);         set(findobj('Tag','slider_cf1'),'Min',cf_1_start);% central attenuation level 1% maxatt_1_end_string = get(findobj('tag','edit_slider_att1_end'),'string');     att_1_end = str2num(att_1_end_string);         set(findobj('Tag','slider_att1'),'Max',att_1_end);%将现在输入的初始值放到slider的value属性中   1:先找到值  2:set值于value属性set(findobj('Tag','slider_att1'),'Value',str2num(get(findobj('Tag','edit_att_1'),'string')));% minatt_1_start_string = get(findobj('tag','edit_slider_att1_start'),'string');                att_1_start = str2num(att_1_start_string);set(findobj('tag','slider_att1'),'Min',att_1_start);% central frequency level 2% maxcf_2_end_string = get(findobj('tag','edit_slider_cf2_end'),'string');     cf_2_end = str2num(cf_2_end_string);         set(findobj('Tag','slider_cf2'),'Max',cf_2_end);%将现在输入的初始值放到slider的value属性中   1:先找到值  2:set值于value属性%为什么要缩小1000倍? 因为slider_bar只能处理整数类型,最大值是2^31=2147483647=2.14GHz 太小了value_temp = str2num(get(findobj('Tag','edit_cf_2'),'string'));slider_value = value_temp / 1000;set(findobj('Tag','slider_cf2'),'Value',slider_value);% mincf_2_start_string = get(findobj('tag','edit_slider_cf2_start'),'string');   cf_2_start = str2num(cf_2_start_string);         set(findobj('Tag','slider_cf2'),'Min',cf_2_start);% central attenuation level 2% maxatt_2_end_string = get(findobj('tag','edit_slider_att2_end'),'string');     att_2_end = str2num(att_2_end_string);         set(findobj('Tag','slider_att2'),'Max',att_2_end);%将现在输入的初始值放到slider的value属性中   1:先找到值  2:set值于value属性set(findobj('Tag','slider_att2'),'Value',str2num(get(findobj('Tag','edit_att_2'),'string')));% minatt_2_start_string = get(findobj('tag','edit_slider_att2_start'),'string');     att_2_start = str2num(att_2_start_string);         set(findobj('Tag','slider_att2'),'Min',att_2_start);% 把初始值放进后面的静态文本里面%注意那个1000倍的关系%单位是kHz    set(findobj('tag','slider_cf1_value'),'string',num2str(get(findobj('tag','slider_cf1'),'value')));set(findobj('tag','slider_att1_value'),'string',num2str(get(findobj('tag','slider_att1'),'value')));set(findobj('tag','slider_cf2_value'),'string',num2str(get(findobj('tag','slider_cf2'),'value')));

⌨️ 快捷键说明

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