我有一个名为buildRay
的函数,它返回1x4矩阵。我这样称呼它多次:
rays = zeros(numRays, 4);
for j = 1:numRays
rays(j, :) = buildRay(particle, (j-1)*anglePart, rayLength);
end
如果我尝试用以下代码替换循环:
rays(1:numRays, :) = buildRay(particle, ((1:numRays)-1).*anglePart, rayLength);
我收到以下错误
???订阅的分配维度不匹配。
我不明白为什么。
有人可以告诉我我做错了吗?
感谢。
答案 0 :(得分:1)
作为错误消息状态,您的左右表达式具有不同的大小。你不能在MATLAB中做到这一点。
为避免for循环,您可以使用ARRAYFUN函数:
rays = arrayfun(@(x) buildRay(particle, ((x-1).*anglePart, rayLength), 1:numRays);
答案 1 :(得分:0)
您需要更改buildRays以接受输入参数的向量(或矩阵)并返回适当大小的矩阵(即不总是1x4
- 如果输入向量是N
元素,则返回{ {1}}矩阵)。
现在,您正在尝试将Nx4
向量分配到1x4
点 - 因此出错。