how can I multiply a vector by scalar?
137 次查看(过去 30 天)
显示 更早的评论
Hi, I have a very simple case. I do not know why there is an error which says, (Undefined operator '*' for input arguments of type 'cell').C1 is a [1*44998] and k=[1*300] vectors. my purpose is to calculate the vector of sss in which a scalar value of 2.7 is multiplied by vector C (which has a size [1*300]. any help would be appreciated.
k=find(c1==1);
time1=t(k);
i=diff(k);
j=find(i>1);
j=[0,j];
n=length(j);
for m=1:n-1;
I{m}=k(j(m)+1:j(m+1))
time{m}=t(I{m})
initial_time{m}=time{m}(1)
final_time{m}=time{m}(end)
end
I{m+1}=k(j(end)+1:end)
time{m+1}=t(I{m+1})
initial_time{m+1}=time{m+1}(1)
final_time{m+1}=time{m+1}(end)
C = cellfun(@minus,final_time,initial_time,'UniformOutput',false)
sss=C*2.7;
0 个评论
采纳的回答
the cyclist
2016-5-19
编辑:the cyclist
2016-5-19
A cell array is a special type of "container", which you cannot do all operations on. You need to use a numeric array for numerical operations. Depending on the contents of C, you might just be able to do
C_num = cell2mat(C)
and carry out your operations on that.
2 个评论
the cyclist
2016-5-19
You might want to back-track and see if C should have been a numerical array all along, rather than being stored in a cell array.
更多回答(2 个)
Jos (10584)
2016-5-19
编辑:Jos (10584)
2016-5-19
C is a cell array. I think you want the content of a cell in C to be multiplied by 2.7. You can do this using cellfun
C = {[10 7 4], 100, 1:5} % a cellarray
C2 = cellfun(@(x) 2.7*x, C, 'un', 0)
0 个评论
dpb
2016-5-19
You get the error because C isn't a vector but a cell containing a vector. You can work around it by
C=C{:}*2.7; % result is double vector
or
C={C{:}*2.7}; % result is cast back to a cell
W/o a way to run your code snippet easily I'm not positive but it's likely you could use logical addressing and avoid creating the cell array to begin with...
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Cell Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!