Matlab:使用列向量的每个元素进行一系列计算(迭代?)

时间:2012-02-15 12:52:12

标签: arrays matlab vector for-loop iteration

theta1 = theta(:,1); //这是从18x30矩阵中提取的数据的列向量theta1是18x1。

然后从这里我需要通过以下计算一次一个地检查每个18个元素:

nx =((cos(theta1(1))^2)/(1.5^2) + ((sin(theta1(1))^2)/(1.7^2)))^(-1/2);

这里我选择了使用“theta1(1)”的第一个元素,但理想情况下我想以某种方式使用for循环,以便可以对所有18个值进行此计算 我有“theta1”,然后产生另一个18x1的“nx”矩阵。我尝试过使用for循环,但我无法让它正常工作。

然后我想在另一个计算中使用“nx”的18个元素中的每一个来获得另一个变量:

d = (2*pi*(nx-1.5)*0.000018)/0.000000555;

所以,我正在寻找某种通用for循环或任何其他合适的方法,这将允许我进行这种类型的计算,其中我使用数组中的每个元素并将其插入公式并生成另一个数组与答案的计算。

提前致谢。

2 个答案:

答案 0 :(得分:1)

尝试使用

nx =((cos(theta1(:)).^2)/(1.5^2) + ((sin(theta1(:)).^2)/(1.7^2))).^(-1/2);
d = (2*pi*(nx(:)-1.5)*0.000018)/0.000000555;

答案 1 :(得分:1)

这是你在找什么?

theta = rand(18,30);
theta1 = theta(:,1);
nx =(cos(theta1.^2)/(1.5.^2) + (sin(theta1.^2)/(1.7^2)).^(-1/2))
d = (2*pi*(nx-1.5)*0.000018)/0.000000555

如果您在.运算符之前使用^,则向量将按元素方向对齐(同样适用于.*./)。查看arithmetic operators