2016-02-23 2 views
1

Я пытаюсь заменить 5-й столбец в каждой ячейке в массиве ячеек 5-м столбцом каждой ячейки из другого массива ячеек. Я сделал следующую функцию, которая делает это, но также заменяет значения во всех остальных столбцах на 0. Как это сделать, не удаляя все другие значения из других столбцов. Функция:Заменить значения в одном столбце в нескольких ячейках в массиве

function [X]=replace_cells(cell) 
X={}; 
for i=1:length(cell) 
    X{i}(:,[5])=cell{i}(:,[5]); 
end 

конец

+1

'X' инициализирован как пустой массив. Вы копируете только 5-й столбец из каждой ячейки 'cell' в' X', поэтому другие значения могут * только * быть '0'. Я также настоятельно рекомендую не использовать ['cell'] (http://www.mathworks.com/help/matlab/ref/cell.html) в качестве имени переменной. – excaza

ответ

1

Ваша функция не заменяет столбцы, так как функция создает X в то время как он должен быть вход, попробуйте эту функцию,

function X = replace_cells(c,X) 
for i = 1 : length(c) 
    X{i}(:,5)=c{i}(:,5); 
end 

cell является Функция Matlab не использует ее как имя для переменных.

+0

Это не делает то, что вы говорите. Аргументы (если они не являются объектами-дескрипторами) копируются в рабочее пространство функции, а это означает, что ваша функция будет изменять копию, а не оригинал. Если вы хотите исправить это, вы должны объявить свою функцию как эту 'функцию X = replace_cells (c, X)'. –

+0

Вероятно, отсутствует аргумент возврата. – Daniel

+0

@ CST-Link, Спасибо, ты прав, я исправлю это. – Rashid

Смежные вопросы