Jack_chengs 2024-04-26 13:32 采纳率: 14.3%
浏览 2

matlab simulink

我的matlab/simulink仿真的代码由什么问题,出来的图像不完整

for S=600:200:1200
    T=25;
sim('jzh.slx')
figure(1)
plot(V,P,'DisplayName',['S=',num2str(S)])
hold on
axis([0 50 0 400])
xlabel('U/V')
ylabel('P/W')
title('光照变化P-U特性曲线')
legendm

figure(2)
plot(V,I,'DisplayName',['S=',num2str(S)])
hold on
axis([0 50 0 20])
xlabel('U/V')
ylabel('I/A')
title('光照变化I-U特性曲线')
legend
end


for T=10:10:40
 S=1000;
sim('jzh.slx')

figure(3)
plot(V,P,'DisplayName',['T=',num2str(T)])
hold on

axis([0 50 0 400])
xlabel('U/V')
ylabel('P/W')
title('温度变化P-U特性曲线')
legend

figure(4)
plot(V,I,'DisplayName',['T=',num2str(T)])
hold on
axis([0 50 0 20])
xlabel('U/V')
ylabel('I/A')
title('温度变化I-U特性曲线')
legend
end


  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-26 13:32
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的MATLAB/Simulink仿真代码中,存在的问题是每次运行sim('jzh.slx')后,并没有正确地将结果(V, P, I)从Simulink模型中提取出来并用于绘制图表。为了修复这个问题,你需要在Simulink模型中设置输出信号,并在MATLAB脚本中读取这些信号。

    首先,在Simulink模型中,为电压(V)、功率(P)和电流(I)设置标量日志记录器(Scope),并将它们命名为"V", "P", 和 "I"。然后,在每个日志记录器的属性中,确保已勾选“Log data during simulation”。

    接下来,修改您的MATLAB脚本,添加部分代码以从Simulink模型中读取数据。这样可以确保每次仿真完成后,新的数据会被捕获并在相应的图形上进行更新。以下是修改后的MATLAB脚本:

    % 设置日志文件名
    log_file = 'jzh_log.mat';
    
    % 清空先前的数据,防止数据叠加
    clear V P I;
    
    for S=600:200:1200
        T=25;
        
        % 运行Simulink仿真,并保存数据到日志文件
        sim('jzh.slx');
        save(log_file, 'V', 'P', 'I');
    
        % 加载日志文件中的数据
        load(log_file);
    
        figure(1)
        plot(V,P,'DisplayName',['S=',num2str(S)])
        hold on
        axis([0 50 0 400])
        xlabel('U/V')
        ylabel('P/W')
        title('光照变化P-U特性曲线')
        legend
        
        figure(2)
        plot(V,I,'DisplayName',['S=',num2str(S)])
        hold on
        axis([0 50 0 20])
        xlabel('U/V')
        ylabel('I/A')
        title('光照变化I-U特性曲线')
        legend
    end
    
    for T=10:10:40
        S=1000;
        
        % 运行Simulink仿真,并保存数据到日志文件
        sim('jzh.slx');
        save(log_file, 'V', 'P', 'I');
    
        % 加载日志文件中的数据
        load(log_file);
    
        figure(3)
        plot(V,P,'DisplayName',['T=',num2str(T)])
        hold on
    
        axis([0 50 0 400])
        xlabel('U/V')
        ylabel('P/W')
        title('温度变化P-U特性曲线')
        legend
        
        figure(4)
        plot(V,I,'DisplayName',['T=',num2str(T)])
        hold on
        axis([0 50 0 20])
        xlabel('U/V')
        ylabel('I/A')
        title('温度变化I-U特性曲线')
        legend
    end
    

    这个修订版的代码应该能解决您遇到的问题,使得每次仿真结束后,新的数据会被正确地加载并绘制到对应的图形中。注意,此代码假定Simulink模型的输出已经正确连接到了名为"V", "P", 和 "I"的日志记录器上。如果没有,请根据实际情况调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月26日

悬赏问题

  • ¥15 MCU控制20V PWM波输出的控制电路
  • ¥15 MS中sorption模块生成的吸附等温线如何计算绝对吸附量和自由气量
  • ¥15 关于智能数据系统的问题
  • ¥15 python 打包sdk不成功,如何解决?
  • ¥15 adv找不到可向其添加属性的有效项目。
  • ¥15 cesm2.2.0移植问题。./manage_externals/checkout_externals
  • ¥15 ntp对时中的时标问题
  • ¥35 pcb上电后,不一会儿,主控过热烧毁
  • ¥15 ubuntu,windows,文件传输,Linux
  • ¥15 北斗定位,cors,无人机,图传