我有一个数字系列8654个元素,它们的数据格式(度(如下(只是一个例子(:
A = [ 1.002 2.003 3.004 4.005 339.006 341.007 342.008 343.009 1.002 2.003 3.004 4.005];
我目前正在使用以下代码-MATLABR2020a来制作上述数组中值大于300减去360的元素;
if (A(:,1) > 300)
A(:,2)= 360-A(:,1);
else
A(:,2) = A(:,1);
end
在第二列中制作一个看起来像的新阵列
A = [ 1.002 2.003 3.004 4.005 21 19 18 17 1.002 2.003 3.004 4.005];
但我得到的阵列与相同
A = [ 1.002 2.003 3.004 4.005 339.006 341.007 342.008 343.009 1.002 2.003 3.004 4.005];
我不知道我在哪个地方出错了!!需要指导!!
您的索引不太正确,因为您在if
条件下同时检查A
的每个元素。
相反,你要么想要一个循环
for ii = 1:size(A,1)
if A(ii,1) > 300
A(ii,2) = 360 - A(ii,1);
else
A(ii,2) = A(ii,1);
end
end
";matlab风格的";这样做的方法是使用逻辑索引:
A(:,2) = A(:,1); % copy to column 2
idx = A(:,2) > 300; % Select the rows satisfying your condition
A(idx, 2) = 360 - A(idx, 2); % Modify those rows
我找到了方法:
A(A>300) = 360-A(A>300);
感谢您的快速回复!!