Zeroing the start of my vectors with a for loop

1 view (last 30 days)
Hello, I have 6 vectors. Gauge1, Gauge2, Gauge3...Gauge6. They do not all start with a 0. So I want to reset each vector with a for loop.
for i=1:6
Gauge(i)=Gauge(i)-Gauge(i)(1);
end
So it should subtract all numbers in the vector with the first number in the vector...
But I get this from matlab ------ ()-indexing must appear last in an index expression. ------
What should I change. Thank you

Accepted Answer

dpb
dpb on 12 Nov 2015
Edited: dpb on 12 Nov 2015
"I have 6 vectors. Gauge1, Gauge2, Gauge3..."
Don't name variables this way!!!! See the FAQ for why not: Avoid using the eval function
As you see, you can't address these variables easily as Matlab can't interpret variable names dynamically for ordinary arrays. Instead create a single array gauges of size [N,6]. Then the above operation becomes trivial--
gauges=bsxfun(@minus,gauges,gauges(1,:));
See
doc bsxfun % for details on the singleton expansion to subtract the one row from the rest

More Answers (1)

Stephen23
Stephen23 on 13 Nov 2015
Edited: Stephen23 on 19 Jun 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!