Я бы хотел добавить легенду к моему сюжету. До сих пор так приятно! он всегда работал, но теперь я сталкиваюсь с ошибкой.Ошибка добавления легенды в сюжет
Мой код для функции черчения состоит в следующем:
function [ ] = plot_mti_IV(Bus_indizes, Bus_voltages,new_results, names)
global Timeslot
m={'-','--',':','-','--',':','-.','-*','-^','-.','-*','-^'};
Timeslot_temp=[1:1:Timeslot(end)];
name_index=find(Bus_voltages==1); %Find index of depicted Variable
%Initialise legend
words=['Bus' num2str(Bus_indizes(1)) names{name_index(1)}]
words=[words ;['Bus' num2str(Bus_indizes(1)) names{name_index(1)}]]
num_Bus=length(Bus_indizes);
colors = distinguishable_colors(num_Bus); %distinguishable_colors.m: Function from Mathworks File Exchange. See license for Copyright!
for i=1:length(name_index) %for number of chosen variables
for j=1:num_Bus %plot this value for all chosen busses
if j==1
plot_data=new_results{i,1}(Timeslot_temp,Bus_indizes(j)); %collect data to be plotted in array
plot(plot_data,m{i},'Color',colors(j,:));
hold on
xlim([Timeslot(1) (Timeslot(end)+Timeslot(end)*0.05)]); %Adjustment, so that legend does not cover graph
hold on
xlabel('Time');
ylabel('Voltage');
else
words= [words ; ['Bus' num2str(Bus_indizes(j)) names{name_index(i)} ]];
plot_data=new_results{i,1}(Timeslot_temp,Bus_indizes(j)); %collect data to be plotted in array
plot(plot_data,m{i},'Color',colors(j,:));
hold on
end
end
end
legend(words); %Add legend to graph
end
Я получаю сообщение об ошибке
Operands to the || and && operators must be convertible to logical scalar values.
Error in legend (line 194)
elseif narg > 0 && ~ischar(varargin{1}) && ...
, когда я исполняю legend(words)
.
Перед выражения legend(words)
, words
имеет формат:
words =
'Bus' '1' 'VBN Voltage Angle'
'Bus' '4' 'VBN Voltage Angle'
'Bus' '2' 'VBN Voltage Angle'
'Bus' '2' 'VCN Voltage Angle'
Я не могу понять эту ошибку и будет очень рад за вашу помощь!
Привет, ах, ладно! не знаю, что мне нужна матрица 1xN ... @ Ander Biguri: да, это будет моя первая запись в точности! здесь я буду размещать пример, который ведет себя так же, как приведенный выше код:
[ output_args ] = test_plot()
figure
Timeslot=[2:1:7]
Bus_indizes=[1,2,3,5]
Bus_voltages=[0,0,0,0,1,1,0,0,0,0,0,0]
new_results=magic(12)
names=cell(1,12);
names{1,1}={'VAN Voltage Magnitude'};
names{1,2}={'VBN Voltage Magnitude'};
names{1,3}={'VCN Voltage Magnitude'};
names{1,4}={'VAN Voltage Angle'};
names{1,5}={'VBN Voltage Angle'};
names{1,6}={'VCN Voltage Angle'};
names{1,7}={'V1 Voltage Magnitude'};
names{1,8}={'V2 Voltage Magnitude'};
names{1,9}={'V0 Voltage Magnitude'};
names{1,10}={'V1 Voltage Angle'};
names{1,11}={'V2 Voltage Angle'};
names{1,12}={'V0 Voltage Angle'};
m={'-','--',':','-','--',':','-.','-*','-^','-.','-*','-^'};
Timeslot_temp=[1:1:Timeslot(end)]; %Array containing all time instants from absolute Beginning of simulation (not necessarily the first value of the timeslot) till the end of the timeslot
name_index=find(Bus_voltages==1); %Find index of depicted Variable
%Initialise words
words=['Bus' num2str(Bus_indizes(1)) names{name_index(1)}]
words=[words ;['Bus' num2str(Bus_indizes(1)) names{name_index(1)}]]
num_Bus=length(Bus_indizes);
colors = distinguishable_colors(num_Bus); %distinguishable_colors.m: Function from Mathworks File Exchange. See license for Copyright!
for i=1:length(name_index) %for number of chosen variables
for j=1:num_Bus %plot this value for all chosen busses, color is changed for every bus
if j==1
plot_data=new_results(Timeslot_temp,Bus_indizes(j)); %collect data to be plotted in array
plot(plot_data,m{i},'Color',colors(j,:));
hold on
xlim([Timeslot(1) (Timeslot(end)+Timeslot(end)*0.05)]); %Adjustment, so that legend does not cover graph
hold on
xlabel('Time');
ylabel('Voltage'); %Label y axis with name of the chosen variable
else
words= [words ; ['Bus' num2str(Bus_indizes(j)) names{name_index(i)} ]];
plot_data=new_results(Timeslot_temp,Bus_indizes(j)); %collect data to be plotted in array
plot(plot_data,m{i},'Color',colors(j,:));
hold on
end
end
end
legend(words); %Add legend to graph
end
'legend' не принимает 2D ячеек или матрицы строк , Вам нужно иметь матрицу 1xN. Каково ожидаемое поведение здесь? Вы хотите, чтобы первая легенда была «Шина напряжения 1 VBN»? Кроме того, можете ли вы опубликовать некоторые данные для его запуска? –
Вы говорите, что он всегда работал. Работало ли это в этом контексте? Если да, можете ли вы опубликовать последний код, который работал и что вы хотите, чтобы легенда отображалась? – mabe
Привет, ах, ладно! не знаю, что мне нужна матрица 1xN ... @ Ander Biguri: да, это будет моя первая запись в точности! здесь я выведу пример, который ведет себя точно так же, как и код выше: – john