Matlab中如何计算xy平面两向量模长差值的余弦平方值
Matlab 计算 $\boldsymbol{\cos^2(|r_1|-|r_2|)}$ 实现方法
运算步骤拆分
你需要计算的表达式可以拆为三个独立运算环节,对应Matlab的不同内置函数:
- 计算xy平面两个二维向量r1、r2的模长(即表达式中的$|r_1|$、$|r_2|$)
- 计算两个模长的差值
- 对差值求余弦值后做平方运算,得到最终结果
可直接运行的实现代码
下面是逐行标注的基础实现,适合新手对照理解:
% 替换下面四个变量为你实际的坐标值即可 x1 = 1; y1 = 2; % 二维向量r1的x、y分量 x2 = 3; y2 = 4; % 二维向量r2的x、y分量 % 组装为Matlab行向量格式 r1 = [x1, y1]; r2 = [x2, y2]; % 用内置norm函数计算向量欧氏模长,等价于手动计算sqrt(x^2 + y^2) mod_r1 = norm(r1); mod_r2 = norm(r2); % 计算模长差 mod_diff = mod_r1 - mod_r2; % 计算余弦平方:注意cos()默认输入为弧度单位 final_result = cos(mod_diff)^2; % 如果你使用的模长差是角度单位,注释掉上一行,改用下面的代码 % final_result = cosd(mod_diff)^2;
新手易踩的注意点
- Matlab内置三角函数分弧度、角度两个版本:函数名不带d的(比如
cos、sin)输入为弧度值,带d的(比如cosd、sind)输入为角度值,根据你实际的物理量单位选择即可 - 如果你需要批量计算多组坐标的结果,把坐标变量定义为同长度的数组,平方、乘法、除法运算要改用点运算符(
.^、.*、./),对应批量计算的代码片段示例:
% 批量计算示例:x1为100组坐标的x分量数组 x1 = rand(100,1); y1 = rand(100,1); x2 = rand(100,1); y2 = rand(100,1); mod_r1 = sqrt(x1.^2 + y1.^2); mod_r2 = sqrt(x2.^2 + y2.^2); final_result = cos(mod_r1 - mod_r2).^2;
内容的提问来源于stack exchange,提问作者user19430560
相关产品推荐
相关产品推荐

