Luc*_*nan 12 matlab list-comprehension
我可以在一个班轮上写下以下内容吗?
x = [1,3,5]
res = zeros(1,size(x,2));
for i=1:size(x,2);
res(i) = foo(x(i);
end;
Run Code Online (Sandbox Code Playgroud)
假设foo函数没有按预期处理数组.在我的情况下,即使给出数组作为参数,foo也会返回一个标量.
例如,在Python中,它看起来像这样:
x = [1,3,5]
res = [foo(y) for y in x]
Run Code Online (Sandbox Code Playgroud)
abc*_*bcd 13
arrayfun
是你需要的.例如:
res = arrayfun(@foo, x)
Run Code Online (Sandbox Code Playgroud)
由于foo
始终返回标量,因此上述方法将起作用,并且res
也将是与尺寸相同的向量x
.如果foo
返回变量长度输出,则必须设置'UniformOutput'
为false
或0
在调用中arrayfun
.然后输出将是一个cell
数组.
只是为了添加@yoda的好答案,而不是使用UniformOutput
,你也可以使用{}
括号:
res = arrayfun(@(t){foo(t)}, x)
Run Code Online (Sandbox Code Playgroud)
此外,在某些情况下,foo
已经是矢量化的.
x = 1:10;
foo = @(t)(power(t,2));
res = foo(x);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14728 次 |
最近记录: |