Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Matlab Display gradient in elliptical tube

Jak si v tom tak v mezičase listuju, chápu správně, že ta podmínka if control... na řádku 13 ohraničuje tu elipsu, tím že vně elipsy dává NaN zatímco uvnitř nějaké hodnoty?

Pokud ano, tak to nefunguje, NaN se nepřiřadí nikdy a tudíž se pokreslí celá plocha. Sem bych zaměřil pátrání.

Vůbec ta podmínka je divná, (teda pokud to chápu správně) jejím výsledkem má být matice a provádí se jen jednou, tam bude potřeba zvolit nějakou jinou strategii, přičemž dva vnořené cykly for by byly asi tím nejhloupějším, ale funkčním řešením (matlab má různé techniky, jak mu říct, aby něco provedl pro každý prvek pole, s ohledem na použití operátorů ./ .^ o řádek výš to asi tušíte).

Jak si tak s tím hraju, asi jsem opravdu na správné stopě. Výsledkem toho porovnání (Control(...)>1) je pole logických hodnot, které tvoří pěknou elipsu. Ta říká, kde májí být hodnoty a kde nehodnoty. Ovšem je potřeba tu akci přiřazení hodnoty nebo NaN provést extra pro každý prvek pole (if kupodivu nepracuje maticově a pole hodnot asi bere v součtu, když to vyhodnotilo jako jedno jediné true). Kdyby šlo o nahrazení nulou, stačilo by to vynásobit element wise ( .* ), ale jestli tam má být NaN tak se bude muset použít jiná finta.

Ono tam asi bude ještě něco dalšího kromě tohoto "ořezu", protože obdržené obrázky nevypadají jako ty vzorové.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny