我想仅使用一次变量的修改版本(不更改原始版本),所以我不想将它保存在新变量中。我可以在Matlab中创建一个新的变量吗?
例如:
a = [1 -2 3];
copy = a;
copy(a < 0) = 0;
b = [4 5 6] .* copy;
我可以简化到像下面这样?
a = [1 -2 3];
b = [4 5 6] .* a(<0 = 0);
编辑:
上面的例子仅仅是一个例子。一般问题是如何获取下面的代码生成的copy
,而不创建它。
% `a` is a vector
% `cond` is a logical vector such as `size(a) == size(cond)`
% `num` is a number
copy = a;
copy(cond) = num;
有*总是*用不同的方式来表达,而不USI问题一个临时变量。在某些情况下,您会牺牲可读性,而在其他情况下,您会提高可读性。在性能不是问题的情况下,我说去寻找最可读的解决方案。一种可能性是'B = [4 5 6]。*一。*(一> = 0)' – nispio
@nispio谢谢,我没有想过由其逻辑一个向量乘以。您的想法帮助我找到了一般问题的[解决方案](http://stackoverflow.com/a/19695519/1529630)。 – Oriol