Can somebody please tell me why this is not working? I'm a beginner with Matlab
relor = gdif(target==2);
if relor > 90
coror = relor - 180;
elseif relor < -90
coror = relor + 180;
else
coror = relor;
end

4 件のコメント

Walter Roberson
Walter Roberson 2020 年 10 月 8 日
What error are you getting?
I note that you do not have a function header as would be required for a function.
MadjeKoe
MadjeKoe 2020 年 10 月 8 日
I do not get an error, but the values aren't added or substracted by 180
Image Analyst
Image Analyst 2020 年 10 月 8 日
Then your coror must be in the range -90 to +90, inclusive. What is gdif and target? What values do they have???
Walter Roberson
Walter Roberson 2020 年 10 月 8 日
I suspect that target == 2 is true for more than one location, so that relor is a vector instead of a scalar. If so then you need to use logical indexing.

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

 採用された回答

Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam 2020 年 10 月 9 日

0 投票

coror = relor + (relor - 180).*(relor > 90) + (relor + 180) .* (relor < -90);

2 件のコメント

MadjeKoe
MadjeKoe 2020 年 10 月 9 日
I tried this, but there are still values left outside -90 & 90. How is this possible?
Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam 2020 年 10 月 9 日
Yes, we have some missing:
coror = relor.*(relor>=-90 & relor<=90) + (relor - 180).*(relor>90) + (relor + 180).*(relor<-90);

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

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2020 年 10 月 9 日

0 投票

relor = gdif(target==2);
coror = relor;
mask = relor > 90;
coror(mask) = relor(mask) - 180;
mask = relor < -90;
coror(mask) = relor(mask) + 180;

カテゴリ

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by