A statement from a Buckingham Palace spokeswoman said: “Following doctor’s advice, the Duke of Edinburgh has reluctantly decided not to attend the commemorations marking the Battle of Jutland tomorrow in Kirkwall and Hoy.
“The Princess Royal, who was already attending the events, will represent the Royal Family.”
Prince Philip, 94, is understood to have no plans to cancel any other forthcoming engagements, and has not attended hospital.
Descendants of those who fought at Jutland have been invited to join the commemorations, which include a service at St Magnus Cathedral on Kirkwall on Tuesday.
Events will continue with a service at Lyness Cemetery on the island of Hoy - the final resting place for more than 450 service personnel who died in the war, including sailors killed at Jutland.
The cemetery stands close to Scapa Flow, from where the British Grand Fleet set out for the Jutland Bank to repel German forces attempting to break a British blockade.
Almost 250 ships took part, creating a scale of battle that has not been seen since.
Both nations claimed victory - Germany because of the 6,094 British losses compared to the 2,551 men it sacrificed, but Britain had seriously weakened the enemy’s naval capability.
There will also be a remembrance service at sea where British and German naval representatives will scatter poppies and forget-me-nots - the German flower of remembrance - into the North Sea at Jutland Bank.
The Princess Royal will be accompanied by Vice Admiral Sir Tim Laurence as vice-chairman of the Commonwealth War Graves Commission.