is it possible to use a function in a vectorization
3 ビュー (過去 30 日間)
古いコメントを表示
is it at all possible to use function like sum, mean, or sqrt within a vectorization? for example
output(:,3) = sum([ output(:,1) output(:,2) ])
I know that in this case it is simple to just add the two columns without using sum, but I want to use several functions in a more complicated computation, however I can't even get this to work.
採用された回答
Jan
2011 年 10 月 31 日
The colon operator is not defined for vectors. Therefore constantError(:,1)*16-15:constantError(:,1)*16 does not create the expected results. But I'm surprised, that it does not create an error.
a = constantError(:,1)*16-15; % [1; 17; 33; 49; 65]
b = constantError(:,1)*16; % [16; 32; 48; 64; 80]
a:b % 1:16
This is the same as a(1):b(1).
But the problem can be solved easier and faster:
sum(reshape(output(:, 1), 16, []), 1) / 16
In addition I'm using sum()/n directly, which is faster than mean.
1 件のコメント
Andrei Bobrov
2011 年 10 月 31 日
n= 5
constantError = [(1:n)', mean(reshape(output,[],numel(output)/n),2)];
その他の回答 (5 件)
Jan
2011 年 10 月 31 日
As you can see by running your example, it is possible. Even more, it is the idea behind vectorization to use function inside the vectorization.
If you fail with a complicated computation, post it here together with the occurring error messages.
Note: Your example looks strange. If output is a nx3 matrix, the sum will reply a 1x2 vector, But this is unlikely to match into output(:, 3). Posting real examples is usually better.
2 件のコメント
Jan
2011 年 10 月 31 日
Is constantVector a [1 x N] row vector?
It is hard to guess such details, and if my guessing is wrong, I'm not helping but confusing you. Please post an example of the code, which inlcude all relevant parts (but not more) and which runs except for the line causing troubles.
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!