У меня есть матрица 5x5, V1, со значениями и классификацией как в первой строке, так и в первом столбце. Если бы вы захотели, вы могли бы подумать о секторах экономики, которые имеют классификацию. Первые два сектора имеют 3-значную классификацию, последние два имеют классификацию из 4 цифр.Как перепроектировать диагональ матрицы в MATLAB?
V1 =
0 101 111 1234 1111
101 4 0 7 0
111 5 8 0 0
1234 6 0 6 2
1111 0 0 4 9
Теперь, я хочу, чтобы rediagonalize все столбцы, которые имеют 4-значный код, используя MATLAB. Это означает, что в четырехзначных столбцах значения должны быть суммированы по всему столбцу и сдвинуты на диагональ. В частности, код должен выполнить следующие шаги:.
- Если код классификации имеет четыре цифры и код классификации равно как в первой строке и первом столбце, а затем суммировать весь столбец (за исключением первое значение столбца, которое является самим классификационным кодом)
- Elseif классификационный код имеет три цифры в столбце, а затем оставить значение как есть
- Else присваивает ноль.
Полученная матрица должна выглядеть следующим образом:
V1 =
0 101 111 1234 1111
101 4 0 0 0
111 5 8 0 0
1234 6 0 17 0
1111 0 0 0 11
Я попытался следующий код, но он не работает:
[vrow vcol] = size(V1)
for c = 2:vcol;
for r = 2:vrow;
if all([ V1(1,c) == V1(r,1), numel(num2str(V1(1,c))) > 3, numel(num2str(V1(r,1))) > 3 ]) ;
V1(r,c) = sum(V1(2:end,c)) ;
elseif numel(num2str(V1(1,c))) == 3;
V1(r,c) = V1(r,c);
else
V1(r,c) = 0;
end
end
end
С выше коде, я получил следующий результат, который близок к желаемому результату, только сумма столбцов не работает:
V1 =
0 101 111 1234 1111
101 4 0 0 0
111 5 8 0 0
1234 6 0 10 0
1111 0 0 0 9
Спасибо за любые подсказки!