For loop help needed
信息
此问题已关闭。 请重新打开它进行编辑或回答。
显示 更早的评论
Can anyone see a reason why when I implement the following for loop:
for ashift = 1:n
x = [x(:,1) - x(ashift) x(:,2) - x(n+ashift) ...
x(:,3) - x(2*n+ashift)];
x = circshift(x,rowshift)
rowshift = rowshift - 1;
end
For the instance when n = 4, the output comes in the order of n = 1, n = 2, n = 4, n = 3 (I have checked this many times with manual calclations.
I can't think of any reason why this should be happening. Any help would be greatly appreciated.
Kind regards, Tom
5 个评论
Azzi Abdelmalek
2013-11-12
Your problem is not clear
Walter Roberson
2013-11-12
Your x appears to be a matrix, but you are access x(ashift) and x(n_ashift) and x(2*n+ashift), which are linear accesses. Are you sure you want to be switching between 2D coordinates and 1D coordinates in the same expression? If x is n rows down, then the 1D coordinates correspond to x(ashift, 1), x(ashift, 2) and x(ashift, 3) which would be clearer to read.
Walter Roberson
2013-11-12
What do you initialize rowshift to ?
Tom
2013-11-13
回答(1 个)
Sean de Wolski
2013-11-12
0 个投票
Use the debugger!
- Put this in a script or function and save the file.
- Put a break point on the first line (click on the dash next to the line number)
- Run the file and use dbstep or the Step icon to step through the loop and investigate what is happening on each line during each iteration.
4 个评论
Tom
2013-11-12
Walter Roberson
2013-11-12
Sean did give step by step instructions. Notice the "click on the dash next to the line number", and "dbstep or the Step icon"
Tom
2013-11-12
Sean de Wolski
2013-11-12
On each line run the line at the command prompt and figure out what each value is doing.
For example
x(:,1) - x(ashift) x(:,2) - x(n+ashift) x(:,3) - x(2*n+ashift)]
Notice I took the ';' off the end so it prints.
Not lets look inside at it
x(n+ashift)
Divide and conquer until you figure out what's going on.
此问题已关闭。
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!