## How to write a line of statement with two vector of different size using no loops

Istiaq Ansari

### Istiaq Ansari (view profile)

さんによって質問されました 2017 年 10 月 22 日

### Cedric Wannaz (view profile)

さんによって コメントされました 2017 年 10 月 24 日
Cedric Wannaz

### Cedric Wannaz (view profile)

さんの 回答が採用されました
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 件のコメント

サインイン to comment.

## 1 件の回答

2017 年 10 月 22 日

### Cedric Wannaz (view profile)

2017 年 10 月 22 日
採用された回答

>> 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

Istiaq Ansari

### Istiaq Ansari (view profile)

2017 年 10 月 24 日
Thanks a lot. I currently have matlab 2016a. Now i guess i am going to switch to newer version.
Cedric Wannaz

### Cedric Wannaz (view profile)

2017 年 10 月 24 日
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.

サインイン to comment.

Translated by