【发布时间】:2015-11-23 13:42:01
【问题描述】:
我写了一个简单的函数,它接受一个向量 vec,遍历它,执行一个操作,其结果存储在另一个相同大小的向量 vecRes 中索引,并在完成循环后返回 vecRes。下面是功能代码:
function [ vecRes ] = squareTerms( vec )
vecSize = size(vec);
vecRes = zeros(vecSize);
for i = 1:vecSize
vecRes(i) = vec(i)^2;
end
end
问题是它似乎退出得太早了,实际上只经过一次迭代后,输出显示为:
vecRes = 1 0 0 0 0 0 0 0 0 0
输入:
vec = 1 2 3 4 5 6 7 8 9 10
我不知道为什么会这样。非常感谢任何帮助。
【问题讨论】:
-
使用the debugger 并阅读您正在使用的函数的文档。特别是
size的输出 -
vecSize的内容是什么?我敢打赌这不是你所期望的。 -
而你所追求的只是
vecRes = vec.^2,不需要循环。 -
在这种情况下使用
numel而不是size。 -
是的,问题就是这样,因为它是一个单行矩阵,它几乎会将它视为一个数组。哦,好吧,接受了本的回答,因为它提供的信息最多,尽管用户someNo 的另一个回答同样正确,而且正是我现在写的。感谢有关元素操作的提示,而不是 for 循环顺便说一句,没想到。我的循环浪费空间是^^