Jack_chengs 2024-04-20 13:37 采纳率: 14.3%
浏览 0

matlab代码错误

为什么我的代码生成不了完整的光伏电池输出曲线?

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=15:5: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


  • 写回答

7条回答 默认 最新

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

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

    在您的MATLAB代码中,您尝试通过两个for循环分别改变光照强度(S)和温度(T),然后对每个条件运行仿真并绘制相应的P-U和I-U特性曲线。然而,代码中的一个关键问题是您没有在每次迭代中保存或更新电压(V)、功率(P)和电流(I)的值。

    为了修复这个问题,您需要在每次sim('jzh.slx')之后读取这些变量的值,并将它们存储在数组中。然后,您可以使用这些数组在for循环外部进行绘图。以下是修改后的代码:

    % Initialize arrays to store V, P, and I values
    VP_S = {}; % For storing V and P for different S values
    VI_S = {}; % For storing V and I for different S values
    VP_T = {}; % For storing V and P for different T values
    VI_T = {}; % For storing V and I for different T values
    
    % Loop over different S values
    for S = 600:200:1200
        T = 25;
        
        % Run simulation
        sim('jzh.slx');
        
        % Read voltage, power, and current from the simulation results
        V = get_param('jzh/slave', 'Voltage'); % Replace 'slave' with your actual block name
        P = get_param('jzh/slave', 'Power'); % Replace 'slave' with your actual block name
        I = get_param('jzh/slave', 'Current'); % Replace 'slave' with your actual block name
        
        % Store data in arrays
        VP_S{end+1} = [V; P];
        VI_S{end+1} = [V; I];
    end
    
    % Loop over different T values
    for T = 15:5:40
        S = 1000;
        
        % Run simulation
        sim('jzh.slx');
        
        % Read voltage, power, and current from the simulation results
        V = get_param('jzh/slave', 'Voltage'); % Replace 'slave' with your actual block name
        P = get_param('jzh/slave', 'Power'); % Replace 'slave' with your actual block name
        I = get_param('jzh/slave', 'Current'); % Replace 'slave' with your actual block name
        
        % Store data in arrays
        VP_T{end+1} = [V; P];
        VI_T{end+1} = [V; I];
    end
    
    % Plot curves for different S values
    figure(1)
    for i = 1:length(VP_S)
        plot(VP_S{i}(1,:), VP_S{i}(2,:),'DisplayName',['S=',num2str(S(i))])
    end
    hold on
    axis([0 50 0 400])
    xlabel('U/V')
    ylabel('P/W')
    title('光照变化P-U特性曲线')
    legend
    
    figure(2)
    for i = 1:length(VI_S)
        plot(VI_S{i}(1,:), VI_S{i}(2,:),'DisplayName',['S=',num2str(S(i))])
    end
    hold on
    axis([0 50 0 20])
    xlabel('U/V')
    ylabel('I/A')
    title('光照变化I-U特性曲线')
    legend
    
    % Plot curves for different T values
    figure(3)
    for i = 1:length(VP_T)
        plot(VP_T{i}(1,:), VP_T{i}(2,:),'DisplayName',['T=',num2str(T(i))])
    end
    hold on
    axis([0 50 0 400])
    xlabel('U/V')
    ylabel('P/W')
    title('温度变化P-U特性曲线')
    legend
    
    figure(4)
    for i = 1:length(VI_T)
        plot(VI_T{i}(1,:), VI_T{i}(2,:),'DisplayName',['T=',num2str(T(i))])
    end
    hold on
    axis([0 50 0 20])
    xlabel('U/V')
    ylabel('I/A')
    title('温度变化I-U特性曲线')
    legend
    

    这段代码首先初始化了四个空数组来存储不同条件下得到的电压、功率和电流值。接下来,它会遍历不同的光照强度(S)和温度(T),并在每次迭代后读取模拟结果中的电压、功率和电流值。最后,它将这些数据用于绘制多条曲线,每一条代表一种特定的光照强度或温度条件下的P-U和I-U特性曲线。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月20日

悬赏问题

  • ¥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,无人机,图传