2016-05-01 6 views
0

помогите мне пожалуйста. Я всегда получаю индексы индексов, которые должны быть либо натуральными целыми числами, либо логической ошибкой всякий раз, когда я добавляю значение 0 на свои «данные», как я могу избавиться от него, мне нужно иметь нуль на этом. когда есть нулевое напряжение (1,0) = 1, но я не могу пройти.Ошибка индексов индексов Matlab

Voltage = [0 1 1 3 4 1; 1 0 5 4 5 3; 6 4 0 4 5 7; 9 3 4 0 6 4; 7 8 5 6 0 7; 4 5 6 7 3 0]; 
data =[0 2 3 4; 5 6 7 8; 2 3 4 5; 4 5 6 7; 3 4 5 6; 1 3 5 7; 1 2 3 4; 3 4 5 6]; 
Vm = data(:,1); 
Vn = data(:,2); 
R = data(:,3);`` 
X1 = data(:,4); 
sz=max(Vn) 
y=1:sz 
for Vm=data(:,1) 
    if Vm==0 
     Voltage(y,Vm)=1 
     Voltage(y,Vm)=logical(Voltage(y,Vm)); 
     Current = Voltage(y,Vm)-Voltage(y,Vn); 
    else Vm >= 1 
     Current = Voltage(y,Vm)-Voltage(y,Vn); 
    end 
end 

ответ

0

Вы пытаетесь ссылаться на значение в операторе еще в Voltage матрице с использованием y но y не является целым числом, что является массивом (или 1d матрица). Если вы выберете y, вы увидите, что это 1 2 3 4 5 6. Есть несколько разделов нарушившей кода, один из которых:

else Vm >= 1 
    disp(y) # `y` is not an integer and therefore not a valid index. 
    Current = Voltage(y,Vm)-Voltage(y,Vn); 

Чтобы исправить это, решить, если y должен быть статическим или изменения в цикле.

Сообщите мне, если вы хотите получить более подробное объяснение.

+0

Здравствуйте, спасибо вам за помощь, я хочу получить дополнительные объяснения, потому что я хочу, чтобы мой «y» изменился в цикле. можете ли вы объяснить, что я могу с ним сделать? – well

+0

@well, как вы хотите «y» изменить? Например, хотите ли вы использовать следующее значение в матрице 'y' каждый раз, когда выполняется условие else? – EngineerCamp

+0

Да, хочу, чтобы это было так. – well