gpt4 book ai didi

matlab - 如何编写没有循环的程序

转载 作者:行者123 更新时间:2023-12-02 05:41:30 24 4
gpt4 key购买 nike

我试图在没有任何 for 或 while 循环的情况下编写以下程序:

function [B] = check(A, k)
B = [];
[nrow ncol] = size(A);
for i = 1:nrow
for j = 1:ncol
if mod(A(i,j),k) == 0
B = [B;A(i,j)];
else
B = [B;A(i,j)*k];
end
end
end

基本上,此程序会检查矩阵 A 中的元素是否可被元素 k 整除。如果 A(i,j) 可被 k 整除,则 A(i,j) 处的元素将放入矩阵 B。如果 A(i,j) 不可被 k 整除,则 A(i,j) 处的元素j) 将乘以 k 并放入矩阵 B。

最佳答案

我会这样做

auxA = mod(A,k);
B = A(auxA==0) + A(auxA~=0).*k;

auxA==0 生成一个与 auxA 大小相同的矩阵,在条件为真和假的位置有 1在其他方面。

A(auxA==0) 返回 A(i,j) 的值,其中矩阵 auxA==0 为 1和 0,其中 auxA~=0

编辑。你可以在一行中执行此操作

B = A(mod(A,k)==0) + A(mod(A,k)~=0).*k;

但这会降低效率,因为您计算了两次 mod(A,k)

关于matlab - 如何编写没有循环的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428470/

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