首页 > 解决方案 > Matlab 数组划分

问题描述

我一直在玩 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

标签: arraysmatlabdivision

解决方案


我认为您以错误的方式解决了这个问题。

在这里,两者的第一个元素AB都是常数。此外,任何向量的两个元素之间的间距也是恒定的。说,他们是cd在哪里c = {A(50) - A(1)}/49d = {B(50) - B(1)}/49。现在, 的第 n 个值Y{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


推荐阅读