【问题标题】:Plotting a polarization-electric field curve (hysteresis) with every data needed用所需的每个数据绘制极化电场曲线(滞后)
【发布时间】:2023-03-31 12:05:01
【问题描述】:

我想在 MATLAB 中绘制一条滞后曲线来说明设备的极化电场。我基本上有电场(输入电压脉冲除以平板电容器中两个极板之间的距离。我也有电流与时间的关系。为了获得极化,我首先需要充电Q(t),通过随时间积分电流。问题是数据包括 NaN 值,我需要在电流向量和时间向量仍然相同大小的情况下摆脱它。其次,电荷Q(t) 应该除以板的面积,并且我应该有它。但我不知道:

1) 如何去除 NaN 值,同时保持相同大小的向量

2) 一个适当的函数,可以随着时间的推移整合电流,所以我得到了充电Q(t)。请注意,它依赖于t,并且应该产生与积分向量大小相对应的向量的答案。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    0)如果您编辑您的问题以包含Minimal Reproducible Example,我们将能够提供更好的帮助。简要说明:

    1) 您需要插入这些值。这样的事情应该适用于简单的情况:

    close all; clear; clc;
    
    % Make some aritficial data
    N = 1e2; % number of data points
    x = linspace(0,1,N);
    y = sin(2*pi*x) + 0.1*randn(1,N);
    y([randsample(1:N,30)]) = NaN; % Introduce NaNs
    
    % Fix bad values
    bad = isnan(y);
    yi = interp1(x(~bad),y(~bad),x,'linear');
    
    % Plot
    plot(x,yi,'.-',x,y,'o');
    legend('Interpolated data','Corrupted data')
    grid on; box on; axis square;
    

    另外:请注意,当您处理多维和/或不均匀采样的数据时,插值问题会变得更加棘手。例如,查看image inpainting,了解如何对 2D、均匀采样的数据执行此操作。

    2) Matlab 的trapz 将x 轴作为可选参数,对输入信号进行梯形积分。如果您想要的是累积梯形积分,请使用函数cumtrapz。您很可能不需要比这两个更复杂的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多