Effacer les filtres
Effacer les filtres

how to shift position of an index of max value to origo in matlab?

6 vues (au cours des 30 derniers jours)
kat001
kat001 le 13 Juin 2018
Modifié(e) : kat001 le 14 Juin 2018
Hi, I would like to shift the position the maximum value so that the maximum value is at the center, i.e. at origo.
  7 commentaires
kat001
kat001 le 14 Juin 2018
Modifié(e) : kat001 le 14 Juin 2018
Ok. But exactly how am I gonna do that? Because x has already the length of 13. It is 'mPos' is has a length of 12. How can I get the same vector lengths?
Adam
Adam le 14 Juin 2018
Well, I haven't examined your code that closely to understand why mPos is only length 12, but presumably you know what the x values should be for it. why is it 12 instead of 13? Is it shifted by 1 or is it the middle of the other samples? (I assume the former judging by the plot). whichever it is, just give an x vector that matches - e.g. x(1:end-1) or x(2:end) or x(1:end-1) + diff( x(1:2) ) / 2 or whatever is appropriate.
As an aside, don'y use square brackets here:
x = [-3:0.5:3];
You should get an M-lint warning in the code highlighting this. The [] is un-necessary as well as being less efficient, not that efficiency matters here, but it's good to get into more efficient habits when they cost nothing.

Connectez-vous pour commenter.

Réponses (2)

KSSV
KSSV le 13 Juin 2018
x = [0 30 60] ;
y = [0 0.3 0] ;
plot(x,y);
xi = x-30 ;
yi = y-0.3 ;
hold on
plot(xi,yi)
  2 commentaires
kat001
kat001 le 13 Juin 2018
Thank you. Now, imagine that x axis is not only bound to 0 to 60, instead it could be any length. How would I be able to feed that into the code in such case?
KSSV
KSSV le 13 Juin 2018
Let x, y be you data..
[val,idx]=max(y);
xi=x-x(idx);
yi=y-y(idx);

Connectez-vous pour commenter.


kat001
kat001 le 14 Juin 2018
Modifié(e) : kat001 le 14 Juin 2018
Now, currently the plot looks like this:
where the red line represents an position vector as the power is increasing. What I would like to do is following (used MS paint for visualization) :
In other words, as the Gaussian profile reaches its maximum, the only way to keep maximum power all time by holding the position at the same place. And I am stuck with the coding here.
So far, my code looks like this:
x = -3:0.1:3;
norm = normpdf(x,0,1);
m = 0;
mPos = zeros(length(norm),1);
for i = 2:length(norm)
if(norm(i)>norm(i-1))
m = m + 0.1;
else
m = m - 0.1;
end
mPos(i) = m;
end
plot(x, mPos, 'r')
hold on
plot(x, norm, 'b')
grid on
hold off

Catégories

En savoir plus sur Scatter Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by