The following code works fine with the first set of input tested however shows error for the second set. I am doing this on Cody. Could anyone tell me what's wrong?
function X = rescale_scores(X)
A= 60:100;
B= rescale(A,0,4);
for c=1:40;
for d=1:size(X,1);
if X(d,length(X))==A(c);
X(d,length(X))=B(c);
end
end
end
X
end

 採用された回答

Ameer Hamza
Ameer Hamza 2020 年 5 月 7 日

2 投票

This can be solved using a one-liner
function X = rescale_scores(X)
X(:,end) = interp1([60 100], [0 4], X(:,end));
end

4 件のコメント

Tavish Pattanayak
Tavish Pattanayak 2020 年 5 月 8 日
Yeah it worked. Thanks!
However could you let me know what was the issue with the code I wrote?
Ameer Hamza
Ameer Hamza 2020 年 5 月 8 日
First, In your code, you used length(X) in
if X(d,length(X))==A(c);
X(d,length(X))=B(c);
end
length() is not correct here. Either use size(X,2), or 'end'.
Also, you used
A = 60:100
which will only work if grades are integers. If they have a decimal part, then it will not equal to any element in A and therefore the condition
X(d,length(X))==A(c)
never becomes true.
Tavish Pattanayak
Tavish Pattanayak 2020 年 5 月 8 日
Thank you!
Minu Muhsina
Minu Muhsina 2022 年 12 月 2 日
I used the following code. But it doesn't work on Test 1. It shows Assertion failed.
Could anyone help me with this.
function X = rescale_scores(X)
X(:,end)=(X(:,end)-60)/10;
end

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMathematics and Optimization についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by