2017-06-27 11 views
0

私は次のMatlab/OctaveはベクタライズのMatlab/Octaveのコード

sentence='The quick brown fox'; 
l=findstr(sentence,' ');% One blank space 
w=l(1); 
first=sentence(1:w-1); 
last=sentence(w:end); 

をコード - ベクトル化するにはどうすればよい私は1つの文に最後の二つの文を組み合わせることができます。最後の4つのステートメントを1つのステートメントに変換するために実行できることはありますか?

答えて

4

strtokはあなたが後にしているものを行います。

​​

PS:あなたの問題の文言を考えると、私は「ワンライナー」および「ベクター化」とは、2つの完全に無関係な概念であることを指摘せざるを得ない感じています。

+0

詳細を教えてください。 – Misha

+0

コメント。ベクトル化は、ベクトル演算を使用してコードのブロックを1行に変換することを前提としていました。どのように間違っているのか教えていただけますか? – Misha

+2

コードの行を減らすことは、何かとは関係ありません(正または負の可読性を除く)。ベクトル化とは、行列を扱うように最適に設計された「行列ベース」演算を用いて、一度に1つの要素で動作する伝統的な反復技術(例えば「forループ」)に代わる多くの技術を指す。そのような操作がはるかに高速である理由は、それらがフードの下で最適な実装(例えば、C++でコード化されている)にリダイレクトされるためであるのに対して、 'forループ'は命令を1つずつ実行することと –

0

あなたは文中のすべての単語を抽出するためstrsplitを使用して検討するかもしれない:

sentence='The quick brown fox'; 
words = strsplit(sentence, ' '); 
first = words{1}; 
last = words{end}; 
関連する問題