Convert loop to vectorization

Here is simple code where I would like to remove for loop. A=[9;9;9]; c1=[2;3;5] for i=1:length(c1) c=c1(i,1); [B]=Subsum (A,c) i=i+1; end
Function subsum is defined as below
function [B] = Subsum (A,c) B=A-c; end
Desired output First loop B=[ 7 ;7;7] second loop B=[6;6;6] and Third loop B=[4;4;4]

 Risposta accettata

madhan ravi
madhan ravi il 7 Nov 2018
Modificato: madhan ravi il 7 Nov 2018
A=[9;9;9];
c=[2;3;5];
b={(A-c)};
B=cell(1,length(c));
for i = 1:length(B)
B{i}=repmat(b{:}(i),numel(c),1);
end
celldisp(B)
command window
>> COMMUNITY
B{1} =
7
7
7
B{2} =
6
6
6
B{3} =
4
4
4
>>

4 Commenti

what's your desired output?
Praveen
Praveen il 7 Nov 2018
Thanks for the answer in case I want output as first loop B=[ 7 ;7;7] second loop B=[6;6;6] and Third loop B=[4;4;4]
Then code is A=[9;9;9]; c1=[2; 3; 5]; for i=1:length(c1) c=c1(i,1) [B] = Subsum (A,c) i=i+1; end
How can I write this without loop
Praveen
Praveen il 7 Nov 2018
Your Answer was correct but I changed my question a bit
if it was correct make sure to accept the answer

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by