List comprehensions vs. functions

56 ビュー (過去 30 日間)
Jordan May
Jordan May 2021 年 3 月 2 日
コメント済み: Jordan May 2021 年 3 月 2 日
Hi, I am new to MATLAB and I am trying to recreate some python code in MATLAB and was wondering if there is anything like this I would be able to do in MATLAB to make life a little easier.
[(-1)**b*0.2*(b+0.1) for b in range(-30,31) if b>5 or b<-5]
Would I be able to do this, or would I need to create a function to do this for me? Thanks for any help in advance.
  2 件のコメント
Stephen23
Stephen23 2021 年 3 月 2 日
編集済み: Stephen23 2021 年 3 月 2 日
MATLAB does not have list comprehensions.
List comprehansions are fundamentally just syntatic sugar for loops, so it is not clear how or why you think a function would be necessary. At first glance, some basic indexing applied to matrices would perform the same purpose:
Jordan May
Jordan May 2021 年 3 月 2 日
Thank you. I used the for loop, and realised using functions was just ridiculous and got the code to replicate the python. Except it seems to runs 60x faster on Matlab, so I am very happy with the result. Thank you again.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2021 年 3 月 2 日
編集済み: Stephen23 2021 年 3 月 2 日
b = -30:30;
b = b(b<-5|b>5);
v = (-1).^b .* 0.2 .* (b+0.1)
v = 1×50
-5.9800 5.7800 -5.5800 5.3800 -5.1800 4.9800 -4.7800 4.5800 -4.3800 4.1800 -3.9800 3.7800 -3.5800 3.3800 -3.1800 2.9800 -2.7800 2.5800 -2.3800 2.1800 -1.9800 1.7800 -1.5800 1.3800 -1.1800 1.2200 -1.4200 1.6200 -1.8200 2.0200
Python output:
%[-5.98, 5.78, -5.58, 5.38, -5.18, 4.98, -4.78, 4.58, -4.38, 4.18, -3.98, 3.78, -3.58, 3.38, -3.18, 2.9800000000000004, -2.7800000000000002, 2.58, -2.3800000000000003, 2.18, -1.9800000000000002, 1.7800000000000002, -1.58, 1.3800000000000001, -1.1800000000000002, 1.22, -1.42, 1.62, -1.82, 2.02, -2.22, 2.42, -2.62, 2.8200000000000003, -3.02, 3.2200000000000006, -3.4200000000000004, 3.6200000000000006, -3.8200000000000003, 4.0200000000000005, -4.220000000000001, 4.420000000000001, -4.62, 4.82, -5.0200000000000005, 5.220000000000001, -5.420000000000001, 5.620000000000001, -5.82, 6.0200000000000005]

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCall Python from MATLAB についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by