【问题标题】:Matlab Array DivisionMatlab 数组划分
【发布时间】:2021-11-06 07:21:28
【问题描述】:

我一直在玩 matlab,并试图使用两个数组来计算绝对相对误差。但是,当我将两个数组相除时,我得到的数组在整个数组中具有相同的值,即使当我手动计算这些值时,它们并不完全相同。我想知道为什么我的结果数组对数组中的每个值都显示相同的答案。

这是我的代码:

function [X] = absrelerror(A, B)

% Calculates absolute relative error for true value A and approximate value B.

A = linspace(sin(-pi/6), sin(pi/6), 50); %True
B = linspace(-pi/6, pi/6, 50); %Approximate

Y = abs((A-B) ./ A); %ARE equation
X = Y * 100; %convert to percent


end

【问题讨论】:

    标签: arrays matlab division


    【解决方案1】:

    我认为你以错误的方式解决问题。

    这里,AB 的第一个元素都是常量。此外,任何向量的两个元素之间的间距也是恒定的。比如说,它们是cd,其中c = {A(50) - A(1)}/49d = {B(50) - B(1)}/49。现在,Y 的第 n 个值是 {A(1)*nc - B(1)*nd}/{A(1)*c} = {A(1)*c - B(1)*c}/A(1),它是常量。因此,MATLAB 在Y 中给出一个常量值也就不足为奇了。

    如果我正确理解了您要做什么,那么您应该按照以下方式进行:

    %A = linspace(sin(-pi/6), sin(pi/6), 50); %True
    B = linspace(-pi/6, pi/6, 50); %Approximate
    
    %Y = abs((A-B) ./ A); %ARE equation
    %X = Y * 100; %convert to percent
    
    A = sin(B);
    X = abs((A-B)./A) * 100;
    
    fprintf('%f ', X)
    

    输出是: 4.719755 4.330958 3.960262 3.607413 3.272170 2.954306 2.653606 2.369868 2.102903 1.852533 1.618593 1.400927 1.199394 1.013862 0.844209 0.690325 0.552111 0.429477 0.322344 0.230643 0.154315 0.093311 0.047592 0.017130 0.001903 0.001903 0.017130 0.047592 0.093311 0.154315 0.230643 0.322344 0.429477 0.552111 0.690325 0.844209 1.013862 1.199394 1.400927 1.618593 1.852533 2.102903 2.369868 2.653606 2.954306 3.272170 3.607413 3.960262 4.330958 4.719755

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2016-10-14
      • 1970-01-01
      相关资源
      最近更新 更多