- matrix indexing uses () not {}, so it's num(v, 1), etc. Also since you're dealing with vectors you shouldn't be using 2D indexing. num(v) would do the same.
- The start bound of your loop is wrong.
- The v and j variables are completely pointless. j is always going to be the same as i and v is always going to be i+1. So your expression can be simplified to
Hi, I am new to MATLAB. I was trying to subtract the consecutive number in the series with the previous number and then storing this number to a new matrix. I implemented the following code but I need some help.
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have a series num: 1
2
3
4
5
And I want the following series num2: 0
1
1
1
1
Below is my code:
len= length(num);
v=2;
j=1;
for i=i:len
num2{v,1} = minus (num{v,1},num{j,1});
v= v+1;
j=j+1;
end
1 Commento
Guillaume
il 1 Mar 2020
There are several issues with your loop:
num2(i+1) = num(i+1) - num(i)
Also note that I've replaced minus(..) by its more standard -, there's no point in making the code more obscure.
But.. see Thiago's answer for the proper way of doing this calculation in matlab.
Risposte (1)
Thiago Henrique Gomes Lobato
il 1 Mar 2020
In Matlab what you want to do is a one line code, you should always try to vectorize your operations or use build in function, since loops are generally not so efficient:
num=[1:5]';
num2 = [0;diff(num)];
1 Commento
Guillaume
il 1 Mar 2020
Yes, despite what you may have been taught (unfortunately) loops are rarely an efficient solution in matlab. It usually forces you to write more code for no benefit. diff, as per Thiago's answer does exactly what you need. Another option is write the expression as the difference of two vectors:
num2 = [0; num(2:end) - num(1:end-1)];
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!