2015-04-21 4 views
1

У меня есть график FFT с отрицательной и положительной частотой по оси X. У меня есть пик на синхронной частоте, например, 1X (1 раз основной частоты) и еще одна пиковая синхронная частота 0,30X (0,30 раза от основной частоты). Теперь я хочу, чтобы масштабирование было помечено на оси. Я использовал следующий код.Шкала осей и маркировка на графике MATLAB

%for setting 1X frequency (Synchronous frequency) 
set(gca,'XTick',-5000:2500:5000) 
set(gca,'XTickLabel',{'-2X','-1X','0','1X','-2X'}) 

%for setting 0.30X (Sub harmonic frequency) 
set(gca,'XTick',-700:700:700) 
set(gca,'XTickLabel',{'-0.3X','0','0.3X'}) 

Но я вижу только второе масштабирование, где первый не отображается. Есть ли другой способ построить это с 2 абсолютными значениями. Пожалуйста, найдите ссылку. Заранее спасибо.

enter image description here

Как вы можете заметить на рисунке. Я смог обозначить первый набор частот (1X, 1 1/2X и т. Д.). Теперь я также хочу второй набор (-30X, 0.30X и т. Д.), Как я указал стрелкой стрелки.

+0

ваши последние две команды перезаписывать первые две из них. Но ваше изображение показывает что-то совершенно другое. Пожалуйста, поделитесь кодом, необходимым для воспроизведения вашей проблемы. – thewaywewalk

+0

@PBCR. Не возражаете ли вы не использовать метки и использовать фактические цифры? – krisdestruction

+0

@PBCR Пожалуйста, подтвердите [мое решение] (http://stackoverflow.com/a/29790323/802378) и любезно согласитесь, если оно правильно. В противном случае, дайте мне знать, что нужно изменить/уточнить! – krisdestruction

ответ

-1

Возможно, я что-то упустил или неправильно понял ваш вопрос, но почему бы вам не разбить его на одну команду? Как упоминалось в комментариях, последний набор команд перезаписывает первый.

set(gca,'XTick',[-5000 -2500 -700 0 700 2500 5000]) 
set(gca,'XTickLabel',{'-2X','-1X','-0.3X','0','0.3X','1X','-2X'}) 
+0

Я не уверен на 100%, если это то, что OP но, возможно, вы должны включить способ построения вторых осей и меток? – krisdestruction

+0

@ krisdestruction Да. это не то, что я искал. Мне нужны обе метки с разными масштабами, которые видны на сюжете. Я обновил свою фигуру. – Agni

+0

@PBCR Боюсь, я все еще не понимаю ваш вопрос или что вы пытаетесь сделать. – am304

1

я не уверен, что вы ищете, но, возможно, это будет работать для вас

c=[-3:3 -3:0.3:3]; % spacing of 1 and 0.3 
c=c.*2500; % 2500 is fundamental frequency 
c=unique(sort(c)); 

for i=1:length(c) 
    str1{i}=[num2str(c(i)/2500,'%.1f'),'X']; 
end 

plot(1,1,'+'); % random 
hold on; 
set(gca,'XTick',c,'XTickLabel',str1); 
xlim([min(c) max(c)]); 
+0

Ваше решение приводит к запутанному сюжету http://i.imgur.com/zO3XgGY.png – krisdestruction

+0

lol мое решение абсолютно правильно. попробуйте растянуть фигуру до полного размера вашего маленького экрана. – Guddu

+0

Я сделал, и я увидел результат. Я неправильно понял, что имел в виду ОП. Я мог бы изменить свое решение утром. Можете ли вы изменить свое решение, чтобы я мог голосовать? Сейчас он заблокирован. – krisdestruction

Смежные вопросы