arrays - 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
解决方案
我认为您以错误的方式解决了这个问题。
在这里,两者的第一个元素A
和B
都是常数。此外,任何向量的两个元素之间的间距也是恒定的。说,他们是c
,d
在哪里c = {A(50) - A(1)}/49
和d = {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
推荐阅读
- dart - 我构建了一个函数来计算每年一件商品的价格。但是我的函数不会读取其中一个变量
- flutter - 关闭颤振应用程序时如何阅读短信
- flutter - 日期之间的差异是错误的
- kubernetes - 使用容器和 Kubernetes 在 Oracle 云上运行 Siebel
- yubico - 将两个 Yubikey 添加到 KeepassXC
- android - 为什么后退按钮关闭应用程序而不是 Webview 中的操作?(反应原生)
- themes - 如果太长,请更改 zsh 主题
- javascript - 获取 AWS S3 上传 URL - NodeJs AWS-SDK
- php - 带有社交名流头像的 Laravel 8 Jetstream 个人资料照片
- excel - 使用 Laravel 将 excel 文件导入数据库