How to write a line of statement with two vector of different size using no loops
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Istiaq Ansari
am 22 Okt. 2017
Kommentiert: Cedric
am 24 Okt. 2017
I am not sure if the title us correct. But here's what i want to do.
n = -10:10;
p = [-0.6 0.2];
r = [ -1.7500 2.7500];
H = zeros(size(n));
for i=1:length(p)
H = H + r(i)*(p(i).^n).*(n>=0);
end
I want to write this for loop in one line of statement. Is there a way?
0 Kommentare
Akzeptierte Antwort
Cedric
am 22 Okt. 2017
Bearbeitet: Cedric
am 22 Okt. 2017
>> H2 = (n >= 0) .* sum(r.' .* p.'.^n) ;
>> isequal( H2, H )
ans =
logical
1
if it doesn't work, you may have a MATLAB version < 2016b. In such case:
>> H3 = (n >= 0) .* sum(bsxfun(@times, r.', bsxfun(@power, p.', n))) ;
>> isequal( H3, H )
ans =
logical
1
2 Kommentare
Cedric
am 24 Okt. 2017
My pleasure! It's worth getting the latest version if it is distributed at your institution, because a lot of new features appeared between 2016b and 2017b. Here in my first solution we use an implicit automatic expansion for example, using a very simple syntax.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!