/ / Начертаване на вълна с различни цветове в една и съща фигура [дубликат] - matlab, matlab-фигура

Начертаване на вълна с различни цветове на една и съща фигура [дубликат] - MATLAB, MATLAB-фигура

Как мога да начертая вълна (представена от 1 x N матрица) с различни цветове в matlab. Обхватът за определен цвят може да бъде предоставен ръчно.

Вижте диаграмата по-долу за очаквания резултат.

въведете описанието на изображението тук

Отговори:

4 за отговор № 1

Ето един прост вариант:

x = linspace(-4*pi,4*pi,10000); % some data
y = -sin(x); % some data
N = 4;
py = reshape(y,[],N);
px = reshape(x,[],N);
plot(px,py,"LineWidth",2)

Където y е вашият вектор и N е броят на парчетата, които искате да различите. Имайте предвид, че трябва да сте сигурни в това y е делима от N без остатък.

въведете описанието на изображението тук

Ако искате да зададете цветовете, можете да направите това с set команда:

p = plot(px,py,"LineWidth",2)
cmap = parula(N); % a set of N colors in RGB matrix
set(p,{"color"},mat2cell(cmap,ones(N,1),3))

и получавате:

въведете описанието на изображението тук


1 за отговор № 2

Тази фигура изглежда като задължителна функция, така че нека просто предположим, че е за този пример. Докато в момента нямам MATLAB пред мен, това, което вероятно бих направил, е в m-файл скрипт:

clear all; clc;
functionToPlot = [sin(0 : (pi/2) : (8*pi))]; %This spacing will look very sharp and pointy, so I"d recommend using >>linspace like shown in other answers.
yAxisVector = [-1 : 1 : 1];
for n = 1 : length(functionToPlot)
if rem(functionToPlot(1,n),2) <= pi
plot(functionToPlot(1,n),yAxisVector,"r")
hold on
elseif rem(functionToPlot(1,n),4) <= pi
plot(functionToPlot(1,n),yAxisVector,"g")
hold on
elseif rem(functionToPlot(1,n),6) <= pi
plot(functionToPlot(1,n),yAxisVector,"y")
hold on
elseif rem(functionToPlot(1,n),8) <= pi
plot(functionToPlot(1,n),yAxisVector,"c")
hold on
end
end

Този код трябва да ви даде функцията, която сте изобразили във вашия въпрос. Тествали ли сте код още? Какъв код сте тествали? Тази връзка показва алтернативен метод, използващ RGB стойности, ако предпочитате това. Успех с вашия проект!