{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2025-12-14T01:33:56.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2025-12-14T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":3065,"title":"Cycling — Critical Power","description":"From Training and Racing with a Power Meter by Allen and Coggan:\r\n\r\n\"A number of equations have been presented in the scientific literature describing human power output as a function of time, some derived from modeling based on the underlying physiology, and some simply derived empirically. One of the simplest and most robust, though, is the original \"critical power\" concept first proposed by H. Monod around 1960. Various formulations of this idea have been presented, but the original equation is a hyperbolic of the form: t = AWC / (P – CP), where t is time to exhaustion [in seconds], P is current power [in Watts], CP is work rate (i.e., power) asymptote, and AWC is degree of curvature of the relationship.\"\r\n\r\nYou will be given values for AWC and CP. Write a function to return the time that the cyclist can maintain for an array of power (P) values. The times should be rounded to the nearest second. If P \u003c= CP, the cyclist can theoretically maintain that power indefinitely (Inf).","description_html":"\u003cp\u003eFrom Training and Racing with a Power Meter by Allen and Coggan:\u003c/p\u003e\u003cp\u003e\"A number of equations have been presented in the scientific literature describing human power output as a function of time, some derived from modeling based on the underlying physiology, and some simply derived empirically. One of the simplest and most robust, though, is the original \"critical power\" concept first proposed by H. Monod around 1960. Various formulations of this idea have been presented, but the original equation is a hyperbolic of the form: t = AWC / (P – CP), where t is time to exhaustion [in seconds], P is current power [in Watts], CP is work rate (i.e., power) asymptote, and AWC is degree of curvature of the relationship.\"\u003c/p\u003e\u003cp\u003eYou will be given values for AWC and CP. Write a function to return the time that the cyclist can maintain for an array of power (P) values. The times should be rounded to the nearest second. If P \u0026lt;= CP, the cyclist can theoretically maintain that power indefinitely (Inf).\u003c/p\u003e","function_template":"function [t] = cycling_crit_power(AWC,CP,P)\r\n\r\nt = zeros(size(P));\r\n\r\nend\r\n","test_suite":"%%\r\nAWC = 5e4;\r\nCP = 200;\r\nP = [150 200 225 250 275 300 350 400 500 1000];\r\nt_corr = [Inf,Inf,2000,1000,667,500,333,250,167,63];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nAWC = 5.3e4;\r\nCP = 222;\r\nP = [150 200 225 250 275 300 350 400 500 1000];\r\nt_corr = [Inf,Inf,17667,1893,1000,679,414,298,191,68];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nAWC = 4.6e4;\r\nCP = 250;\r\nP = [150 200 225 250 275 300 350 400 500 1000];\r\nt_corr = [Inf,Inf,Inf,Inf,1840,920,460,307,184,61];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nAWC = 5e4;\r\nCP = 300;\r\nP = 250:50:1500;\r\nt_corr = [Inf,Inf,1000,500,333,250,200,167,143,125,111,100,91,83,77,71,67,63,59,56,53,50,48,45,43,42];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nind = randi(4);\r\nswitch ind\r\n\tcase 1\r\n\t\tAWC = 5e4;\r\n\t\tCP = 200;\r\n\t\tP = [150 200 225 250 275 300 350 400 500 1000];\r\n\t\tt_corr = [Inf,Inf,2000,1000,667,500,333,250,167,63];\r\n\tcase 2\r\n\t\tAWC = 5.3e4;\r\n\t\tCP = 222;\r\n\t\tP = [150 200 225 250 275 300 350 400 500 1000];\r\n\t\tt_corr = [Inf,Inf,17667,1893,1000,679,414,298,191,68];\r\n\tcase 3\r\n\t\tAWC = 4.6e4;\r\n\t\tCP = 250;\r\n\t\tP = [150 200 225 250 275 300 350 400 500 1000];\r\n\t\tt_corr = [Inf,Inf,Inf,Inf,1840,920,460,307,184,61];\r\n\tcase 4\r\n\t\tAWC = 5e4;\r\n\t\tCP = 300;\r\n\t\tP = 250:50:1500;\r\n\t\tt_corr = [Inf,Inf,1000,500,333,250,200,167,143,125,111,100,91,83,77,71,67,63,59,56,53,50,48,45,43,42];\r\nend\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":26769,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":43,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2015-03-05T04:31:29.000Z","updated_at":"2026-02-16T11:45:09.000Z","published_at":"2015-03-05T04:31:29.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFrom Training and Racing with a Power Meter by Allen and Coggan:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\\\"A number of equations have been presented in the scientific literature describing human power output as a function of time, some derived from modeling based on the underlying physiology, and some simply derived empirically. One of the simplest and most robust, though, is the original \\\"critical power\\\" concept first proposed by H. Monod around 1960. Various formulations of this idea have been presented, but the original equation is a hyperbolic of the form: t = AWC / (P – CP), where t is time to exhaustion [in seconds], P is current power [in Watts], CP is work rate (i.e., power) asymptote, and AWC is degree of curvature of the relationship.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given values for AWC and CP. Write a function to return the time that the cyclist can maintain for an array of power (P) values. The times should be rounded to the nearest second. If P \u0026lt;= CP, the cyclist can theoretically maintain that power indefinitely (Inf).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":3064,"title":"Cycling — Normalized Power","description":"In cycling, a power meter is an indispensable tool to record power output (in Watts) and measure fitness gains and performance metrics. When analyzing the data though, many different workouts can yield approximately the same average power, despite major differences between workouts (e.g., a long steady effort vs. sprints or intervals). Normalized power (NP) is a method to measure the effect of more intense efforts on the overall workout. NP is calculated by the following four steps (from Training and Racing with a Power Meter by Allen and Coggan):\r\n\r\n# Calculate a 30-second rolling average of the power data\r\n# Raise these values to the fourth power\r\n# Average the resulting values\r\n# Take the fourth root of the result\r\n\r\nYou will be provided with the 30-second rolling average power data set (vector). Write a function to return the average power (using the rolling average data) and the normalized power using steps 2–4 above. Round the values to the nearest integer.","description_html":"\u003cp\u003eIn cycling, a power meter is an indispensable tool to record power output (in Watts) and measure fitness gains and performance metrics. When analyzing the data though, many different workouts can yield approximately the same average power, despite major differences between workouts (e.g., a long steady effort vs. sprints or intervals). Normalized power (NP) is a method to measure the effect of more intense efforts on the overall workout. NP is calculated by the following four steps (from Training and Racing with a Power Meter by Allen and Coggan):\u003c/p\u003e\u003col\u003e\u003cli\u003eCalculate a 30-second rolling average of the power data\u003c/li\u003e\u003cli\u003eRaise these values to the fourth power\u003c/li\u003e\u003cli\u003eAverage the resulting values\u003c/li\u003e\u003cli\u003eTake the fourth root of the result\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eYou will be provided with the 30-second rolling average power data set (vector). Write a function to return the average power (using the rolling average data) and the normalized power using steps 2–4 above. Round the values to the nearest integer.\u003c/p\u003e","function_template":"function [P_avg,NP] = cycling_norm_power(power)\r\n\r\nP_avg = 0;\r\n\r\nNP = 0;\r\n\r\nend\r\n","test_suite":"%% steady\r\npower = 200*ones(1,3600);\r\nP_avg_corr = 200;\r\nNP_corr = 200;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% intervals\r\npower = 100*ones(1,60);\r\npower = [power 250*ones(1,240)];\r\npower = [power 100*ones(1,60)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 200;\r\nNP_corr = 227;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% ramped intervals\r\npower = 100*ones(1,30);\r\npower = [power 100:249];\r\npower = [power 250:-1:101];\r\npower = [power 100*ones(1,30)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 163;\r\nNP_corr = 182;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% medium sprints\r\npower = 100*ones(1,170);\r\npower = [power 500*ones(1,20)];\r\npower = [power 100*ones(1,170)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 122;\r\nNP_corr = 244;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% intense sprints\r\npower = 100*ones(1,176);\r\npower = [power 1500*ones(1,8)];\r\npower = [power 100*ones(1,176)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 131;\r\nNP_corr = 579;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% anti-cheating (random)\r\nind = randi(5);\r\nswitch ind\r\n\tcase 1\r\n\t\tpower = 200*ones(1,3600);\r\n\t\tP_avg_corr = 200;\r\n\t\tNP_corr = 200;\r\n\tcase 2\r\n\t\tpower = 100*ones(1,60);\r\n\t\tpower = [power 250*ones(1,240)];\r\n\t\tpower = [power 100*ones(1,60)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 200;\r\n\t\tNP_corr = 227;\r\n\tcase 3\r\n\t\tpower = 100*ones(1,30);\r\n\t\tpower = [power 100:249];\r\n\t\tpower = [power 250:-1:101];\r\n\t\tpower = [power 100*ones(1,30)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 163;\r\n\t\tNP_corr = 182;\r\n\tcase 4\r\n\t\tpower = 100*ones(1,170);\r\n\t\tpower = [power 500*ones(1,20)];\r\n\t\tpower = [power 100*ones(1,170)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 122;\r\n\t\tNP_corr = 244;\r\n\tcase 5\r\n\t\tpower = 100*ones(1,176);\r\n\t\tpower = [power 1500*ones(1,8)];\r\n\t\tpower = [power 100*ones(1,176)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 131;\r\n\t\tNP_corr = 579;\r\nend\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":26769,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":43,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2015-03-05T03:45:47.000Z","updated_at":"2026-03-31T11:12:20.000Z","published_at":"2015-03-05T03:45:47.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn cycling, a power meter is an indispensable tool to record power output (in Watts) and measure fitness gains and performance metrics. When analyzing the data though, many different workouts can yield approximately the same average power, despite major differences between workouts (e.g., a long steady effort vs. sprints or intervals). Normalized power (NP) is a method to measure the effect of more intense efforts on the overall workout. NP is calculated by the following four steps (from Training and Racing with a Power Meter by Allen and Coggan):\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCalculate a 30-second rolling average of the power data\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRaise these values to the fourth power\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAverage the resulting values\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTake the fourth root of the result\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be provided with the 30-second rolling average power data set (vector). Write a function to return the average power (using the rolling average data) and the normalized power using steps 2–4 above. Round the values to the nearest integer.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":3065,"title":"Cycling — Critical Power","description":"From Training and Racing with a Power Meter by Allen and Coggan:\r\n\r\n\"A number of equations have been presented in the scientific literature describing human power output as a function of time, some derived from modeling based on the underlying physiology, and some simply derived empirically. One of the simplest and most robust, though, is the original \"critical power\" concept first proposed by H. Monod around 1960. Various formulations of this idea have been presented, but the original equation is a hyperbolic of the form: t = AWC / (P – CP), where t is time to exhaustion [in seconds], P is current power [in Watts], CP is work rate (i.e., power) asymptote, and AWC is degree of curvature of the relationship.\"\r\n\r\nYou will be given values for AWC and CP. Write a function to return the time that the cyclist can maintain for an array of power (P) values. The times should be rounded to the nearest second. If P \u003c= CP, the cyclist can theoretically maintain that power indefinitely (Inf).","description_html":"\u003cp\u003eFrom Training and Racing with a Power Meter by Allen and Coggan:\u003c/p\u003e\u003cp\u003e\"A number of equations have been presented in the scientific literature describing human power output as a function of time, some derived from modeling based on the underlying physiology, and some simply derived empirically. One of the simplest and most robust, though, is the original \"critical power\" concept first proposed by H. Monod around 1960. Various formulations of this idea have been presented, but the original equation is a hyperbolic of the form: t = AWC / (P – CP), where t is time to exhaustion [in seconds], P is current power [in Watts], CP is work rate (i.e., power) asymptote, and AWC is degree of curvature of the relationship.\"\u003c/p\u003e\u003cp\u003eYou will be given values for AWC and CP. Write a function to return the time that the cyclist can maintain for an array of power (P) values. The times should be rounded to the nearest second. If P \u0026lt;= CP, the cyclist can theoretically maintain that power indefinitely (Inf).\u003c/p\u003e","function_template":"function [t] = cycling_crit_power(AWC,CP,P)\r\n\r\nt = zeros(size(P));\r\n\r\nend\r\n","test_suite":"%%\r\nAWC = 5e4;\r\nCP = 200;\r\nP = [150 200 225 250 275 300 350 400 500 1000];\r\nt_corr = [Inf,Inf,2000,1000,667,500,333,250,167,63];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nAWC = 5.3e4;\r\nCP = 222;\r\nP = [150 200 225 250 275 300 350 400 500 1000];\r\nt_corr = [Inf,Inf,17667,1893,1000,679,414,298,191,68];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nAWC = 4.6e4;\r\nCP = 250;\r\nP = [150 200 225 250 275 300 350 400 500 1000];\r\nt_corr = [Inf,Inf,Inf,Inf,1840,920,460,307,184,61];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nAWC = 5e4;\r\nCP = 300;\r\nP = 250:50:1500;\r\nt_corr = [Inf,Inf,1000,500,333,250,200,167,143,125,111,100,91,83,77,71,67,63,59,56,53,50,48,45,43,42];\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n\r\n%%\r\nind = randi(4);\r\nswitch ind\r\n\tcase 1\r\n\t\tAWC = 5e4;\r\n\t\tCP = 200;\r\n\t\tP = [150 200 225 250 275 300 350 400 500 1000];\r\n\t\tt_corr = [Inf,Inf,2000,1000,667,500,333,250,167,63];\r\n\tcase 2\r\n\t\tAWC = 5.3e4;\r\n\t\tCP = 222;\r\n\t\tP = [150 200 225 250 275 300 350 400 500 1000];\r\n\t\tt_corr = [Inf,Inf,17667,1893,1000,679,414,298,191,68];\r\n\tcase 3\r\n\t\tAWC = 4.6e4;\r\n\t\tCP = 250;\r\n\t\tP = [150 200 225 250 275 300 350 400 500 1000];\r\n\t\tt_corr = [Inf,Inf,Inf,Inf,1840,920,460,307,184,61];\r\n\tcase 4\r\n\t\tAWC = 5e4;\r\n\t\tCP = 300;\r\n\t\tP = 250:50:1500;\r\n\t\tt_corr = [Inf,Inf,1000,500,333,250,200,167,143,125,111,100,91,83,77,71,67,63,59,56,53,50,48,45,43,42];\r\nend\r\nassert(isequal(cycling_crit_power(AWC,CP,P),t_corr))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":26769,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":43,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2015-03-05T04:31:29.000Z","updated_at":"2026-02-16T11:45:09.000Z","published_at":"2015-03-05T04:31:29.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFrom Training and Racing with a Power Meter by Allen and Coggan:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\\\"A number of equations have been presented in the scientific literature describing human power output as a function of time, some derived from modeling based on the underlying physiology, and some simply derived empirically. One of the simplest and most robust, though, is the original \\\"critical power\\\" concept first proposed by H. Monod around 1960. Various formulations of this idea have been presented, but the original equation is a hyperbolic of the form: t = AWC / (P – CP), where t is time to exhaustion [in seconds], P is current power [in Watts], CP is work rate (i.e., power) asymptote, and AWC is degree of curvature of the relationship.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given values for AWC and CP. Write a function to return the time that the cyclist can maintain for an array of power (P) values. The times should be rounded to the nearest second. If P \u0026lt;= CP, the cyclist can theoretically maintain that power indefinitely (Inf).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":3064,"title":"Cycling — Normalized Power","description":"In cycling, a power meter is an indispensable tool to record power output (in Watts) and measure fitness gains and performance metrics. When analyzing the data though, many different workouts can yield approximately the same average power, despite major differences between workouts (e.g., a long steady effort vs. sprints or intervals). Normalized power (NP) is a method to measure the effect of more intense efforts on the overall workout. NP is calculated by the following four steps (from Training and Racing with a Power Meter by Allen and Coggan):\r\n\r\n# Calculate a 30-second rolling average of the power data\r\n# Raise these values to the fourth power\r\n# Average the resulting values\r\n# Take the fourth root of the result\r\n\r\nYou will be provided with the 30-second rolling average power data set (vector). Write a function to return the average power (using the rolling average data) and the normalized power using steps 2–4 above. Round the values to the nearest integer.","description_html":"\u003cp\u003eIn cycling, a power meter is an indispensable tool to record power output (in Watts) and measure fitness gains and performance metrics. When analyzing the data though, many different workouts can yield approximately the same average power, despite major differences between workouts (e.g., a long steady effort vs. sprints or intervals). Normalized power (NP) is a method to measure the effect of more intense efforts on the overall workout. NP is calculated by the following four steps (from Training and Racing with a Power Meter by Allen and Coggan):\u003c/p\u003e\u003col\u003e\u003cli\u003eCalculate a 30-second rolling average of the power data\u003c/li\u003e\u003cli\u003eRaise these values to the fourth power\u003c/li\u003e\u003cli\u003eAverage the resulting values\u003c/li\u003e\u003cli\u003eTake the fourth root of the result\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eYou will be provided with the 30-second rolling average power data set (vector). Write a function to return the average power (using the rolling average data) and the normalized power using steps 2–4 above. Round the values to the nearest integer.\u003c/p\u003e","function_template":"function [P_avg,NP] = cycling_norm_power(power)\r\n\r\nP_avg = 0;\r\n\r\nNP = 0;\r\n\r\nend\r\n","test_suite":"%% steady\r\npower = 200*ones(1,3600);\r\nP_avg_corr = 200;\r\nNP_corr = 200;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% intervals\r\npower = 100*ones(1,60);\r\npower = [power 250*ones(1,240)];\r\npower = [power 100*ones(1,60)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 200;\r\nNP_corr = 227;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% ramped intervals\r\npower = 100*ones(1,30);\r\npower = [power 100:249];\r\npower = [power 250:-1:101];\r\npower = [power 100*ones(1,30)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 163;\r\nNP_corr = 182;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% medium sprints\r\npower = 100*ones(1,170);\r\npower = [power 500*ones(1,20)];\r\npower = [power 100*ones(1,170)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 122;\r\nNP_corr = 244;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% intense sprints\r\npower = 100*ones(1,176);\r\npower = [power 1500*ones(1,8)];\r\npower = [power 100*ones(1,176)];\r\npower = repmat(power,[1,10]);\r\nP_avg_corr = 131;\r\nNP_corr = 579;\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n\r\n%% anti-cheating (random)\r\nind = randi(5);\r\nswitch ind\r\n\tcase 1\r\n\t\tpower = 200*ones(1,3600);\r\n\t\tP_avg_corr = 200;\r\n\t\tNP_corr = 200;\r\n\tcase 2\r\n\t\tpower = 100*ones(1,60);\r\n\t\tpower = [power 250*ones(1,240)];\r\n\t\tpower = [power 100*ones(1,60)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 200;\r\n\t\tNP_corr = 227;\r\n\tcase 3\r\n\t\tpower = 100*ones(1,30);\r\n\t\tpower = [power 100:249];\r\n\t\tpower = [power 250:-1:101];\r\n\t\tpower = [power 100*ones(1,30)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 163;\r\n\t\tNP_corr = 182;\r\n\tcase 4\r\n\t\tpower = 100*ones(1,170);\r\n\t\tpower = [power 500*ones(1,20)];\r\n\t\tpower = [power 100*ones(1,170)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 122;\r\n\t\tNP_corr = 244;\r\n\tcase 5\r\n\t\tpower = 100*ones(1,176);\r\n\t\tpower = [power 1500*ones(1,8)];\r\n\t\tpower = [power 100*ones(1,176)];\r\n\t\tpower = repmat(power,[1,10]);\r\n\t\tP_avg_corr = 131;\r\n\t\tNP_corr = 579;\r\nend\r\n[P_avg,NP] = cycling_norm_power(power);\r\nassert(isequal(P_avg_corr,P_avg))\r\nassert(isequal(NP_corr,NP))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":26769,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":43,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2015-03-05T03:45:47.000Z","updated_at":"2026-03-31T11:12:20.000Z","published_at":"2015-03-05T03:45:47.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn cycling, a power meter is an indispensable tool to record power output (in Watts) and measure fitness gains and performance metrics. When analyzing the data though, many different workouts can yield approximately the same average power, despite major differences between workouts (e.g., a long steady effort vs. sprints or intervals). Normalized power (NP) is a method to measure the effect of more intense efforts on the overall workout. NP is calculated by the following four steps (from Training and Racing with a Power Meter by Allen and Coggan):\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCalculate a 30-second rolling average of the power data\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRaise these values to the fourth power\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAverage the resulting values\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTake the fourth root of the result\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be provided with the 30-second rolling average power data set (vector). Write a function to return the average power (using the rolling average data) and the normalized power using steps 2–4 above. Round the values to the nearest integer.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"term":"tag:\"meter\"","current_player_id":null,"fields":[{"name":"page","type":"integer","callback":null,"default":1,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"per_page","type":"integer","callback":null,"default":50,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"sort","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"body","type":"text","callback":null,"default":"*:*","directive":null,"facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":false},{"name":"group","type":"string","callback":null,"default":null,"directive":"group","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"difficulty_rating_bin","type":"string","callback":null,"default":null,"directive":"difficulty_rating_bin","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"id","type":"integer","callback":null,"default":null,"directive":"id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"tag","type":"string","callback":null,"default":null,"directive":"tag","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"product","type":"string","callback":null,"default":null,"directive":"product","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_at","type":"timeframe","callback":{},"default":null,"directive":"created_at","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"profile_id","type":"integer","callback":null,"default":null,"directive":"author_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_by","type":"string","callback":null,"default":null,"directive":"author","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player_id","type":"integer","callback":null,"default":null,"directive":"solver_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player","type":"string","callback":null,"default":null,"directive":"solver","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"solvers_count","type":"integer","callback":null,"default":null,"directive":"solvers_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"comments_count","type":"integer","callback":null,"default":null,"directive":"comments_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"likes_count","type":"integer","callback":null,"default":null,"directive":"likes_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leader_id","type":"integer","callback":null,"default":null,"directive":"leader_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leading_solution","type":"integer","callback":null,"default":null,"directive":"leading_solution","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true}],"filters":[{"name":"asset_type","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":"\"cody:problem\"","prepend":true},{"name":"profile_id","type":"integer","callback":{},"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":"author_id","static":null,"prepend":true}],"query":{"params":{"per_page":50,"term":"tag:\"meter\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"meter\"","","\"","meter","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f1968af5f18\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f1968af5e78\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f1968af4cf8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f1968af6238\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f1968af6198\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f1968af6058\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f1968af5fb8\u003e":"tag:\"meter\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f1968af5fb8\u003e":"tag:\"meter\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"search","password":"J3bGPZzQ7asjJcCk","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"meter\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"meter\"","","\"","meter","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f1968af5f18\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f1968af5e78\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f1968af4cf8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f1968af6238\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f1968af6198\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f1968af6058\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f1968af5fb8\u003e":"tag:\"meter\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f1968af5fb8\u003e":"tag:\"meter\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":3065,"difficulty_rating":"easy"},{"id":3064,"difficulty_rating":"easy"}]}}