Matlan读取S2P文件

2025-10-19 09:14:50

1、请查看S2P文件是否如下格式

# hz S ma R 50

# HZ S RI R 50

2、保存以下脚本

function [FRE S11 S21 S12 S22 noise] = ReadS2P(filename)

    file = fopen(filename);

    file_temp_s = fopen(".s_parameter_temp.t", 'w');

    file_temp_n = fopen(".noise_temp.t", "w");

    status = 0;

    sParameter_context = [];

    nNoise_context = [];

    paramete_type = '';

    while 1

        line = fgetl(file);

        if(length(line) == 0) continue; end;

        if(~ischar(line)) break;end

        if(status == 0 && line(1) == '#')

            status = 1;

            paramete_type = line;

            continue;

        end

        if((status == 1 || status == 2) && line(1) ~= '!')

            status = 2;

            %sParameter_context = strcat(sParameter_context, line);

            fprintf(file_temp_s, "%s\n", line);

        end

        if(status == 2 && line(1) == '!')

            status = 3;

        end

        if(status == 3 && line(1) ~= '!')

            %nNoise_context = strcat(nNoise_context, line);

            fprintf(file_temp_n, "%s\n", line);

        end

    end

    fclose(file_temp_n);

    fclose(file_temp_s);

    file_temp_s = dlmread(".s_parameter_temp.t");

    file_temp_n = dlmread(".noise_temp.t");

    

    para_list = split(paramete_type, ' ');

    FRE = file_temp_s(:,1);

    if(strcmp(para_list(4), 'MA') || strcmp(para_list(4), 'ma'))

        temp = 2;

        S11 = file_temp_s(:,temp); temp = temp + 2;

        S21 = file_temp_s(:,temp); temp = temp + 2;

        S12 = file_temp_s(:,temp); temp = temp + 2;

        S22 = file_temp_s(:,temp); temp = temp + 2;

    end

    if(strcmp(para_list(4), 'RI') || strcmp(para_list(4), 'ri'))

        temp = 2;

        S11 = sqrt(file_temp_s(:,temp).*file_temp_s(:,temp) + file_temp_s(:,temp+1).*file_temp_s(:,temp+1));temp = temp + 2;

        S12 = sqrt(file_temp_s(:,temp).*file_temp_s(:,temp) + file_temp_s(:,temp+1).*file_temp_s(:,temp+1));temp = temp + 2;

        S21 = sqrt(file_temp_s(:,temp).*file_temp_s(:,temp) + file_temp_s(:,temp+1).*file_temp_s(:,temp+1));temp = temp + 2;

        S22 = sqrt(file_temp_s(:,temp).*file_temp_s(:,temp) + file_temp_s(:,temp+1).*file_temp_s(:,temp+1));temp = temp + 2;   end

    if(strcmp(para_list(4), 'DB') || strcmp(para_list(4), 'db'))

        temp = 2;

        S11 = file_temp_s(:,temp); temp = temp + 2;

        S21 = file_temp_s(:,temp); temp = temp + 2;

        S12 = file_temp_s(:,temp); temp = temp + 2;

        S22 = file_temp_s(:,temp); temp = temp + 2;

    end

    noise = file_temp_n;

end

3、测试代码

[S1_FRE S1_S11 S1_S21 S1_S12 S1_S22 S1_Noise] = ReadS2P('data.s2p');

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢