2016-12-08 5 views
0

У меня есть график некоторых данных, которые, я считаю, должны быть приблизительными log^2(n) = log(n)^2. Я хочу построить n по горизонтальной оси и данные по вертикальной оси, но я хочу масштабировать горизонтальную ось на log^2, чтобы получить примерно прямую линию. Теперь я знаю, как это сделать только с log вместо log^2 (например, используйте semilogx), но я не знаю, как это сделать для log^2.Настройка log^2 Масштаб для Matlab Рисунок

Я попытался сделать набор (gca, 'xscale', 'log'), чтобы дать масштабирование, а затем снова запустить то же самое, надеясь, что это снова изменится на log. К сожалению, этого не произошло. (Я считаю) единственными вариантами для 'xscale' являются linear и log.

Я просмотрел обычные форумы (через поиск Google), но я не могу найти решение. Есть много вопросов о масштабировании только log, и есть некоторые изменения базы логарифма (не то, что я хочу сделать). Любые советы по этому вопросу были бы очень признательны! Спасибо


Позвольте мне просто добавить уточнение. В теории вероятностей (что я и делаю), принято писать log^2(n) для log(n)^2. Вы говорите о том, что время смешивания составляет «квадрат логарифма»; поэтому это обозначение означает, что вы можете сбросить n и все еще сказать ~ log^2. Поэтому я считаю, что мои данные приблизительны log(n)^2.

ответ

1

Я считаю, что вы правы насчет опций xscale. Это обычные оси для использования на графиках. Если вы хотите, чтобы ваши данные отображались как прямая линия, измените свои данные, взяв log ваших x-значений, когда вы планируете. Просто не забудьте изменить xlabel, чтобы показать, что вы сделали.

E.g.

plot([1,10,100],[3,2,1]) 
set(gca,'xscale','log') 
xlabel('x') 

может быть показан как

plot(log10([1,10,100]),[3,2,1]) 
xlabel('log10(x)') 

EDIT: Вы можете изменить XTick и XTickLabel вручную, как это вместо

set(gca,'XTick',log10(x)) 
set(gca,'XTickLabel',{'10^0','10^1','10^2'}) 
+0

Да, это все, что я смог придумать с. Проблема в том, что тогда значения на моей горизонтальной оси неверны: числа, которые они показывают, являются 'log^2 (n)' вместо 'n'. Спасибо в любом случае –

+0

(Также см. Мою заметку о том, что означает 'log^2'. Я думаю, вы неправильно поняли (мое двусмысленное письмо), поэтому я добавил разъяснения.) –

+0

Я предположил, что u означает журнал (log (n)), но использовал более простой пример. Если вас интересуют показанные цифры, попробуйте посмотреть ([link] https://se.mathworks.com/help/matlab/creating_plots/change-tick-marks-and-tick-labels-of-graph-1.html) – Solstad

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