how to make a function that calculate consective difference of elements of a vector
显示 更早的评论
Hi every one. I am going to attempt that query.. Write a function called neighbor that takes as input a row vector called v and creates another row vector as output that contains the absolute values of the differences between neighboring elements of v. For example, if v == [1 2 4 7], then the output of the function would be [1 2 3]. Notice that the length of the output vector is one less than that of the input. Check that the input v is indeed a vector and has at least two elements and return an empty array otherwise. You are not allowed to use the diff built‐in function. I am trying that code, getting an error in for loop because its inner statement (vi+1) creating problem.To me instead of for loop while loop will be implement. But how i not know.Any correction will be highly appreciable..
function [A]=neighbor(v)
if isvector(v) && length(v)>=2 % checking whether v is a vector and have two elements
for i=1:length(v)
A=v(i+1)-v(i); % getting the absolute values of v(i+1)-v(i)
end
else
A=[];
end
end
1 个评论
Andrei Bobrov
2015-5-27
编辑:Andrei Bobrov
2015-5-27
without diff function
conv2(v(:)',[1, -1],'valid')
采纳的回答
更多回答(1 个)
Yoav Livneh
2015-5-27
If you insisnt on using for loops you just need to change the limit of the for loop to
length(v)-1
and of course add
A(i) = ...
so you get a vector and not just a single value.
But you can just use indexing instead of loops to solve this:
A = v(2:end) - v(1:end-1);
类别
在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!