gpt4 book ai didi

matlab - 如果矩阵中偶数/奇数则更改向量

转载 作者:行者123 更新时间:2023-12-02 01:35:53 28 4
gpt4 key购买 nike

我是 Matlab 编程新手,到目前为止我只上过 3 节课。我的家庭作业有问题。 (而且我来自冰岛,所以英语不是我的母语,所以请原谅我的语法)给定一个矩阵 A,我应该更改该值吗?如果向量为偶数,则为 0;如果为奇数,则为 1。

这就是我到目前为止所拥有的。

    A = [90 100 87 43 20 58; 29 5 12 94 8 62; 75 21 36 83 35 24; 47 51 70 59 82 33]; 
B = zeros(size(A));

for k = 1:length(A)
if mod(A(k),2)== 0 %%number is even
B(k) = 0;
else
B(k) = 1; %%number is odd
end

end

B(A,2==0) = 0;
B(A,2~=0) = 1

我得到的是:

B =
0 0 0 0 0 0
1 1 0 0 0 0
1 0 0 0 0 0
1 0 0 0 0 0
1 0 0 0 0 0

如果有人可以帮助我,我将不胜感激:)

最佳答案

你们很接近。不要使用 length(A) - 使用 numel(A)length(A) 返回沿最大维度的元素数量。因此,由于有 6 列和 4 行,因此该循环只会迭代 6 次。 numel 返回数组 A 中的元素总数,这是您想要迭代 中的每个值时想要的结果一个

因此:

A = [90 100 87 43 20 58; 29 5 12 94 8 62; 75 21 36 83 35 24; 47 51 70 59 82 33]; 
B = zeros(size(A));

for k = 1:numel(A) %// Change
if mod(A(k),2)== 0 %%number is even
B(k) = 0;
else
B(k) = 1; %%number is odd
end
end

上面的循环将遍历矩阵中的每个元素,如果是偶数,则将相应元素设置为 0,如果是奇数,则将相应元素设置为 1。

但是,我鼓励您在代码上使用矢量化操作。不要为此使用循环。具体来说,您可以通过一次 mod 调用轻松完成此操作:

B = mod(A,2);

mod(A,2) 将以 2 作为操作数计算矩阵 A 中每个值的模,并输出矩阵 B > 尺寸相同。这将准确计算每个数字的奇偶校验。

我们得到B:

>> A = [90 100 87 43 20 58; 29 5 12 94 8 62; 75 21 36 83 35 24; 47 51 70 59 82 33]; 
>> B = mod(A,2)

B =

0 0 1 1 0 0
1 1 0 0 0 0
1 1 0 1 1 0
1 1 0 1 0 1

关于matlab - 如果矩阵中偶数/奇数则更改向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32341953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com