The most effective way to kill a battleship is with another battleship as long as you're half way decent with your gunnery skill. Torpedoes are laughably under-powered and take a VERY long time to actually sink a unit. The Yamato can basically drain the carrier and airfields of Torpedo planes before it finally goes down. Torpedoes are easy to avoid as well. If a squadron of aircraft are coming your ways and you get hit by two out of three torpedoes, you suck at maneuvering. Another thing to consider is the damage actually done.
Let's say that you get a ship down to 1/4 health using torpedoes. When that ship goes to engage another ship, it will almost be as if those torpedoes never hit you. Why? Because of hull damage. Sure, torpedoes fill you hull up with water and make your ship prettily list to port or you have your stern in the water, but your hull still has 100% armor. Hull integrity is what matters in dive-bombing runs and artillery duels. If you can damage the other players HULL before the battle begins, you have a slight advantage. However, if you are in a gun battle long enough and your hull does go out, then water damage does count.
If you are having trouble with a sub trailing you then you're a dumb-*** who should get off multiplayer right now and play single player for practice. There is almost NEVER an excuse to be having trouble with a sub when you are in a battleship unless you have lost all of your escorts, in which case the game is most likely lost anyways (Even then you can hug the shore. No multiplayer map with battleships and subs together lack a shoreline). If you do have escorts and you're too stupid to send a destroyer after the dude OR launch dive-bombers/torpedo bombers with depth charges to go after the sub, you were bound to lose because your father dropped you on your head as a child.
Same applies to planes. You should be able to see the torp planes coming in from at LEAST three miles away IF you are the only ship. If you have escorts or other units on the map you can see it even further away. This gives you plenty of times to sic your fighters on the attack planes. The only map where a battleship can't have CAP circling overhead is Surigao Straights due to the lack of Japanese carriers or airfields. CAP helps take down a lot of planes, but most battleships have a pretty awesome anti-aircraft arsenal on board (Exception is the Fuso. The only multiplayer map she is on with planes she has awesome cruisers for flak plus destroyers as well so even then there's no excuse.) If by chance you manage to get let's say, SIX, squadrons of planes closing in on you (And this shouldn't happen unless you are the definition of the word 'garbage' or you are one of the last units and the other team has time to set up an attack), they are easy enough to avoid. Just put that baby into reverse and at the right moment and steer her in the right direction. Most of the torpedoes will miss with the exception of the human controlled ones (Unless, once again, the human sucks).
Almost EVERY time I get nailed by another ship's torpedoes, I am not paying attention or am busy battling another ship (Or my buddies are bored and decide to attack a friendly ship for no reason, cough Snork cough). If you're going to plan on using a ship's torpedoes as your primary means to take out a battleship then you're most likely going to be on a short trip to the ocean floor very shortly. Even if you do manage to get the torpedoes to hit (Sometimes torpedoes are well aimed and it's not by chance), like stated before, they are pitifully underpowered.
There are more reasons why but this post is long as it is and I need to get back to what I was doing prior to reading this. Farewell and happy sinking!
EDIT: The only map I would suggest using torpedoes on is Surigao Straights because of the PT boats and terrible battle cruisers that they give you.
I was 'discussing' how torpedoes are not the best way to kill a battleship in a certain video game.... The guy is sorta of an idiot so he got me going. Copy and pasted this message from MS word to xbox.com because it was so long and I wanted a copy in case it didn't post.