Matlan读取S2P文件

 时间:2026-02-14 20:37:35

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');

  • matlab的使用:[6]matlab如何控制图像输出
  • matplotlib把数组转化为图片的方法
  • 关于Tableau如何新建故事
  • Vcenter怎样为主机安装授权
  • c++如何添加高斯噪声
  • 热门搜索
    jayjun面膜怎么用 狗图片大全 海尔简介 微信群昵称网名大全 四字成语大全及解释 斗罗大陆魂兽大全 家常炖菜菜谱大全 性姿势大全 幼儿保健知识大全 诗歌朗诵大全