相关疑难解决方法(0)

根据条件改变矩阵的元素

假设我有矩阵A:

A =

 1     2     3
 4     5     6   
Run Code Online (Sandbox Code Playgroud)

对于每个元件x<2,加10,
对每一个元素x>5,添加20,和
对于每个元素2<=x<=5,添加30.

所以对于我的示例矩阵A,我需要得到以下矩阵B:

B = 

11    32    33
34    35    26
Run Code Online (Sandbox Code Playgroud)

我需要能够以一般方式执行此操作,因为实际矩阵将非常大.有什么建议?我可以使用该IF声明吗?

indexing matlab if-statement

2
推荐指数
1
解决办法
1952
查看次数

Matlab:使用逻辑索引删除IF-ELSE条件语句

我不明白如何在不使用if语句或循环的情况下完成这个问题.

n = input ('What is the vector length? ');
y = rand(n,1);
x = rand(n,1);
p = zeros(n,1);
for i=1:n
    if (y(i) > 0.5 && x(i) < 0.5) || y(i) < 0.2
        p(i) = y(i) + x(i);
    else
        p(i) = (y(i)*x(i))^2
    end
end
Run Code Online (Sandbox Code Playgroud)

a)仅使用向量运算和逻辑索引重新实现代码(即,您不能使用任何循环或分支).

arrays indexing matlab conditional vectorization

2
推荐指数
1
解决办法
757
查看次数