Как мога да начертая вълна (представена от 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 стойности, ако предпочитате това. Успех с вашия проект!