#matlab #plot
#matlab #построение графика
Вопрос:
Я предварю этот пост очевидным фактом, что я не очень разбираюсь в MATLAB, и этот пост может быть несколько запутанным. Любая помощь приветствуется!
Мне нужно хранить данные внутри двух параметров, но я не уверен, как это сделать. Количество значений «x» известно, но это значение, введенное пользователем, поэтому его нельзя жестко запрограммировать. То же, что и значения «y». Вот упрощенный пример того, что, я думаю, мне нужно (числа здесь жестко закодированы для примера).
Затем на конечном рисунке должно быть несколько графиков. Каждая переменная «x» — это ее собственный «вывод», который необходимо отобразить. В конце мне нужно «x» количество графиков, где «z» и «y» являются координатами (X, Y) для каждого графика «x» соответственно.
РЕДАКТИРОВАТЬ: обновленный пример кода.
list = [.0025, .005, .0075];
x = input('How many? ');
y = linspace(2.4*10^9, 5.0*10^9, 1000);
z = zeros(x, length(y));
for i = x
time = list(i)/(3*10^8);
for j = y
z(i,j) = (time * j);
end
end
for i = x
plot(z(i,j));
end
Я получаю следующую ошибку:
Requested 3x2400000000 (53.6GB) array exceeds maximum array size preference. Creation of arrays greater
than this limit may take a long time and cause MATLAB to become unresponsive. See array size limit or
preference panel for more information.
Приведенный мной пример может быть совершенно неправильным, но я надеюсь, что я объяснил достаточно, чтобы кто-то мог оставить отзыв.
Комментарии:
1. Когда вы передаете
plot
матрицу, она отображает каждый столбец независимо. Может быть, это то, что вам нужно (ваш вопрос не совсем ясен)2. Я обновил свой пример кода, надеюсь, он более понятен для того, чего я пытаюсь достичь.
Ответ №1:
Создайте z-массив заранее в соответствии с вашими потребностями: https://uk.mathworks.com/help/matlab/ref/zeros.html
Затем вы можете заполнить его z[x,y] = x y
HTH
Комментарии:
1. Я уже это сделал, но я получаю эту ошибку. «Запрошенный массив размером 3×2400000000 (53,6 ГБ) превышает предпочтительный максимальный размер массива». Но «x» равно 5, а «y» равно 1000.
2. Я мог бы представить, что есть проблема с синтаксическим анализом этой переменной. Не могли бы вы вставить весь свой код?
3. Не могли бы вы просто для целей тестирования попробовать: z = zeros(x, 1000); … по-видимому, linspace() cmd создает этот огромный массив, который на самом деле довольно странный. Просто хочу убедиться, что ошибка находится где-то в linspace cmd или нет. (у меня нет ноутбука с matlab — тогда я бы сделал это сам)